簡體   English   中英

Python 與 3 個列表的交集

[英]PYTHON INTERSECTION WITH 3 LISTS

我必須找到具有相同格式的 3 個列表之間的交集(?)

順便說一下,我知道如何做兩個列表,如下所示:

    l=list(input("input:"))
    m=list(input("input:"))
    def intersect(l, m):
      return list(set(l) & set(m))

但它似乎不適用於 3 個列表!!!

a = list(input("Input:"))
b = list(input("Input:"))
c = list(input("Input:"))
def intersect(a, b, c):
  return list(set(a) & set(b) & set(c))

print intersect(a, b, c)

例如,如果我輸入 123 213 312 它應該返回

[1, 3]

set()不關心順序所以set([1, 2, 3])set([2, 1, 3])是同一個 set 和set([1, 2, 3]) & set([2, 1, 3])給出{1,2,3}

您必須使用zip(a,b)來獲取對和檢查對

a = list("123")
b = list("213")
c = list("312")

def intersect(a, b, c):
    p = [x for x, y in zip(a, b) if x==y]    
    q = [x for x, y in zip(b, c) if x==y]    
    r = [x for x, y in zip(c, a) if x==y]    
    return p + q + r

print(intersect(a, b, c))

結果:

['3', '1']

您最終可以對其進行排序以獲得['1', '3']

    return sorted(p + q + r)

暫無
暫無

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

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