Tri avec un mélange de chiffres et de lettres

import numpy as np
import re

def isd(N):
    return bool(re.compile("^[-+]?([0-9]+(\.[0-9]*)?|\.[0-9]+)([eE][-+]?[0-9]+)?$").match(N))

def sort(A):
	B=list(np.copy(A))
	B.sort(key = lambda x: float(x) if isd(x) else x)
	return B

def argsort(A):
	B=list(np.copy(A))
	B=sort(B)
	return [B.index(i) for i in A]

###
A=['0', '1', '10', 'c0', '12', '13', '34','-3.', '1e+2','16', 'c1','test', 'b0', '3','0.1','1.2','1e-3']
print A
print sort(A)
print argsort(A)

Résultat de sortie

['0', '1', '10', 'c0', '12', '13', '34', '-3.', '1e+2', '16', 'c1', 'test', 'b0', '3', '0.1', '1.2', '1e-3']
['-3.', '0', '1e-3', '0.1', '1', '1.2', '3', '10', '12', '13', '16', '34', '1e+2', 'b0', 'c0', 'c1', 'test']
[1, 4, 7, 14, 8, 9, 11, 0, 12, 10, 15, 16, 13, 6, 3, 5, 2]

Recommended Posts

Tri avec un mélange de chiffres et de lettres
Distinguer les chiffres et les lettres avec des expressions régulières
Script pour tweeter avec des multiples de 3 et des nombres avec 3 !!
Ten Puzzle-Make 10 avec seulement 4 chiffres et 4 règles
Nombres premiers et fractions
Générez des nombres de Fibonacci avec des fermetures, des itérateurs et des générateurs Python
Convertit les nombres avec des virgules et des triangles en types numériques.
Avec et sans WSGI
Afficher les nombres et les caractères affectés aux variables dans l'impression python
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
Distribution gaussienne mixte et logsumexp
Travailler avec le tkinter et la souris
Python et matériel - Utilisation de RS232C avec Python -
Juger les nombres premiers avec python
Tri des fichiers image avec Python (2)
Tri des fichiers image avec Python (3)
Tri des fichiers image avec Python
Extraire des nombres avec des expressions régulières
Super résolution avec SRGAN et ESRGAN
Group_by avec sqlalchemy et sum
python avec pyenv et venv
Avec moi, NER et Flair
Fonctionne avec Python et R