簡體   English   中英

在Python列表中刪除具有相同條目的壓縮對

[英]Remove zipped pairs with same entries in Python list

我有一個拉鏈對的列表(例如A)

A = [(0, 0), (0, 1), (0, 6), (0, 7), (1, 3), (1, 1), (2, 2)]

刪除第一對和第二對相等的所有對(並創建新列表)的最佳方式是什么?

在上面的示例( A )中,我希望刪除的對是(0,0)(1,1)(2,2) 在此示例中,我希望新列表看起來像這樣。

A_new = [(0, 1), (0, 6), (0, 7), (1, 3)]

您可以對if子句使用簡單的列表推導,對於要保留的所有不相等對,返回True

>>> A = [(0, 0), (0, 1), (0, 6), (0, 7), (1, 3), (1, 1), (2, 2)]
>>> [(x, y) for x, y in A if x != y]
[(0, 1), (0, 6), (0, 7), (1, 3)]

使用filter ,它將判斷函數作為第一個參數來告知要保留的元素,並將可迭代列表作為第二個參數, lambda定義了一個匿名函數。

A_new = filter(lambda x: x[0] != x[1], A)

您可以使用list comprehension來做到這一點:

a = [(0, 0), (0, 1), (0, 6), (0, 7), (1, 3), (1, 1), (2, 2)]
final = [k for k in a if k[0] != k[1]]

輸出:

print(final)
>>> [(0, 1), (0, 6), (0, 7), (1, 3)]

暫無
暫無

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

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