簡體   English   中英

Python列表理解。 從列表列表中刪除NoneType或emty列表

[英]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)]

您的代碼有兩個錯誤:

  1. 您使用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

  2. 您正在遍歷列表時從列表中刪除項目。 絕對不要那樣做。 像我在這里一樣,總是創建一個新列表。

如果您要刪除的所有子列表都包含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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM