[英]Python- list comprehension. Removing NoneType or emty list from list of list
我想刪除列表中的空列表和NoneType列表。 這是一個例子。
new_pop=[[[0,1,2,3],[4,5,6]],[[],[8,9]],[[1,2,3],None]]
value = None
empty =[]
for i in range(len(new_pop)):
if value in new_pop[i] and [] in new_pop[i]:
new_pop.remove(new_pop[i])
print(new_pop)
我的願望結果是
new_pop=[[[0,1,2,3],[4,5,6]]]
new_pop = [sub for sub in new_pop if not (None in sub or [] in sub)]
您的代碼有兩個錯誤:
您使用and
。 sub = [[],[8,9]]
滿足None in sub
None in sub and [] in sub
而不滿足None in sub
None in sub and [] in sub
,因為它不滿足[] in sub
。 您需要or
。
您正在遍歷列表時從列表中刪除項目。 絕對不要那樣做。 像我在這里一樣,總是創建一個新列表。
如果您要刪除的所有子列表都包含None
或[]
則假定子list
的所有項目都是具有內容的list
,則可以使用all()
的保護措施:
>>> [x for x in new_pop if all(x)]
[[[0, 1, 2, 3], [4, 5, 6]]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.