kilka możliwości:
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)
przykładową sesję:
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]
>>>
'''! = []', Dlatego '.remove' nie działa. Ale nadal jest to złe rozwiązanie (albo sprawdzisz, czy przed słowem znajduje się '[] in list1' -" O (n ** 2) "- lub złap błąd, który poda inaczej - brzydko). – delnan
tak niesamowite, gdy uświadomiłeś sobie, że chociaż twoje pytanie nie jest powszechne, ale ktoś dawno temu opublikował to i zostało pięknie odebrane! Uwielbiam SO –