Quelques options :
filter(lambda x: len(x) > 0, list1) # Doesn't work with number types
filter(None, list1) # Filters out int(0)
filter(lambda x: x==0 or x, list1) # Retains int(0)
session d'échantillonnage :
Python 2.7.1 (r271:86832, Nov 27 2010, 17:19:03) [MSC v.1500 64 bit (AMD64)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> list1 = [[], [], [], [], [], 'text', 'text2', [], 'moreText']
>>> filter(lambda x: len(x) > 0, list1)
['text', 'text2', 'moreText']
>>> list2 = [[], [], [], [], [], 'text', 'text2', [], 'moreText', 0.5, 1, -1, 0]
>>> filter(lambda x: x==0 or x, list2)
['text', 'text2', 'moreText', 0.5, 1, -1, 0]
>>> filter(None, list2)
['text', 'text2', 'moreText', 0.5, 1, -1]
>>>
4 votes
'' != []
c'est pourquoi.remove
n'a pas fonctionné. Mais c'est quand même une mauvaise solution (soit vous vérifiez s'il y a[] in list1
avant la main -O(n**2)
- ou d'attraper l'erreur qu'il lance sinon - moche).1 votes
C'est tellement étonnant quand tu as découvert que même si ta question n'est pas commune, quelqu'un l'a postée il y a longtemps et y a trouvé une belle réponse ! J'aime SO