Một vài lựa chọn: phiên
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)
mẫu:
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]
>>>
'''! = []', Đó là lý do tại sao '.remove' không hoạt động. Nhưng nó vẫn là một giải pháp tồi (hoặc bạn kiểm tra nếu có '[] trong list1' trước khi tay -' O (n ** 2) '- hoặc bắt lỗi nó ném khác - xấu xí). – delnan
thật tuyệt vời khi bạn thấy rằng mặc dù câu hỏi của bạn không phổ biến, nhưng một người nào đó từ lâu đã đăng nó và nó đã được trả lời rất đẹp! Tôi yêu SO –