Je cherche à 'nettoyer' une liste en excluant tous les éléments qui contiennent des caractères autres que 0-9, et je me demande s'il existe un moyen plus efficace que par ex.Manière la plus efficace de supprimer des entrées de liste non numériques
import re
invalid = re.compile('[^0-9]')
ls = ['1a', 'b3', '1']
cleaned = [i for i in ls if not invalid.search(i)]
print cleaned
>> ['1']
Comme je vais fonctionner sur des listes de grandes ish (5k articles) de longues chaînes (15 caractères).
Ouais, ça va très bien. – urschrei
+1, une autre possibilité serait 'nettoyé = filtre (str.isdigit, ls)' – eumiro
@eumiro, vrai, mais c'est à la fois moins Pythonic et ne fonctionne aussi que pour les objets 'str' exacts - la solution de @ MattH fonctionne pour' str ',' unicode', et tous les autres objets qui ont une méthode 'isdigit()' (dactylographie). –