簡體   English   中英

從 Python 中的列表中刪除包含相同元素的列表

[英]Removing a list containing the same elements from a list in Python

有沒有一種簡單的方法來刪除包含所有相同元素的列表,而不是指定實際位置? 例如,必須刪除A[1]因為所有元素都相同?

A=[[[1],[2],[2]],[[3],[3],[3]],[[4],[5],[4]]]
print(A)

A.remove(A[1])
print(A)

output 是並且應該是

[[[1],[2],[2]],[[4],[5],[4]]]

我們可以在這里使用列表推導:

A = [[[1],[2],[2]],[[3],[3],[3]],[[4],[5],[4]]]
output = [x for x in A if min(x) != max(x)]
print(output)  # [[[1], [2], [2]], [[4], [5], [4]]]

我們可以通過檢查最小值和最大值是否相同來將子列表識別為被刪除的候選者。 如果這兩個值相同,那么我們保留子列表。

您可以使用 list.count 方法計算列表中相等項目的數量。 考慮到 A 的所有元素不能為空,您可以像這樣過濾它們。

filtered = [el for el in A if el.count(el[0]) != len(el)]

或者為了確保代碼不會在空項目上拋出 IndexError,您可以檢查項目的長度。

filtered = [el for el in A if len(el) and el.count(el[0]) != len(el)]

這種方法也適用於字符串和其他類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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