Je veux supprimer toutes les chaînes vides d’une liste de chaînes en python.
Mon idée ressemble à ceci :
Y a-t-il une manière plus Pythonique pour cela ?
Je veux supprimer toutes les chaînes vides d’une liste de chaînes en python.
Mon idée ressemble à ceci :
Y a-t-il une manière plus Pythonique pour cela ?
Je voudrais utiliser filter
:
str_list = filter(None, str_list) # fastest
str_list = filter(bool, str_list) # fastest
str_list = filter(len, str_list) # a bit of slower
str_list = filter(lambda item: item, str_list) # slower than list comprehension
Tests:
>>> timeit('filter(None, str_list)', 'str_list=["a"]*1000', number=100000)
2.4797441959381104
>>> timeit('filter(bool, str_list)', 'str_list=["a"]*1000', number=100000)
2.4788150787353516
>>> timeit('filter(len, str_list)', 'str_list=["a"]*1000', number=100000)
5.2126238346099854
>>> timeit('[x for x in str_list if x]', 'str_list=["a"]*1000', number=100000)
13.354584932327271
>>> timeit('filter(lambda item: item, str_list)', 'str_list=["a"]*1000', number=100000)
17.427681922912598
Au lieu de si x, je voudrais utiliser si X != "dans le but de simplement éliminer les cordes à vide. Comme ceci:
str_list = [x for x in str_list if x != '']
Cela permettra de préserver Aucun type de données au sein de votre liste. Aussi, dans le cas où votre liste d'entiers a et 0 est l'un d'entre eux, il sera également préservé.
Par exemple,
str_list = [None, '', 0, "Hi", '', "Hello"]
[x for x in str_list if x != '']
[None, 0, "Hi", "Hello"]
Utiliser filter
:
newlist=filter(lambda x: len(x)>0, oldlist)
Les inconvénients de l'utilisation de filtre comme l'a fait remarquer, c'est qu'il est plus lent que les autres; aussi, lambda
sont généralement coûteux.
Ou vous pouvez aller pour la plus simple et la plus itératif de tous:
# I am assuming listtext is the original list containing (possibly) empty items
for item in listtext:
if item:
newlist.append(str(item))
# You can remove str() based on the content of your original list
c'est la plus intuitive, les méthodes et il le fait dans le temps convenable.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.