簡體   English   中英

Python通過Issubset或其他方法比較列表中的項目

[英]Python Compare item from list of list by Issubset or other method

我想查看列表的一個列表(列表A)中的所有項目是否出現在列表的另一列表(列表B-完整列表)中,然后將返回true或false保存到列表中。

例如,下面是兩個列表(列表列表)

List A : [ [1,2],[3,4],[8,9] ]

List B : [ [1,2,3,4], [5,6,7],[8,10] ]

預期結果

 Result List : [[True,False,False]

您可以使用以下代碼:

A = [ [1,2],[3,4],[8,9] ]
B = [ [1,2,3,4], [5,6,7],[8,10] ]
result = []
for x,y in zip(A, B):
    if all(e in y for e in x):
        result.append(True)
    else:
        result.append(False)

產生如下列表:

[True, False, False]

該代碼使用zip()函數將兩個列表中的對應項配對在一起。

另外,行all(e in y for e in x)是代碼的必要部分。 它檢查A的第一個子列表中的所有元素是否都在第一個子列表B中,依此類推。

您可以對set使用zip()issubset()方法,如下所示:

[True if set(x).issubset(set(y)) else False for x,y in zip(a,b)]

在性能方面,我認為這比ammar的答案更好。 但這是一個班輪;-)

使用issubset()

A = [[1,2],[3,4],[8,9]]
B = [[1,2,3,4], [5,6,7],[8,10]]
result = [True if set(i[0]).issubset(i[1]) else False for i in list(zip(A,B))]
print(result)
# 158 µs ± 14.7 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

輸出:

[True, False, False]

嘗試list-comprehensionzip

a = [ [1,2],[3,4],[8,9] ]

b = [ [1,2,3,4], [5,6,7],[8,10] ]

result = [True if set(i[0]).issubset(set(i[1])) else False for i in zip(a,b) ]
print(result)

輸出:

C:\Users\Desktop>py x.py
[True, False, False]

暫無
暫無

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

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