2017-10-11 63 views
0

我想做一個函數,它打印由參數採取的兩個元組的公共元素。 你能給我一個曲目嗎?python:函數與元組

def common_elements(t1, t2): 
    element = t1,t2 
    for x in element: 
     if x in t1 and x in t2: 
      print tuple(x) 
common_elements((1,2,3),(1,4,5,2)) 

回答

0

我認爲你的元素分配是問題。元素本身就是一個元組,因此如果語句正在評估一個元組是否在t1中,那麼它不是,而不是元素本身。嘗試獲取元組中所有元素的方法:

element = [] 
element.extend(t1) 
element.extend(t2) 

現在,您的if語句應該可以工作。你的印刷聲明也很奇怪。

1

使用一組:

tuple(set((1,2,3)).intersection((1,4,5,2))) 

結果:

(1, 2) 
0

在使用element = t1,t2這一說法正在製作的元組的元組。例如: -

>>> x=(3,4) 
>>> y=(7,3) 
>>> z=x,y 
>>> z 
((3, 4), (7, 3)) 

而主叫for x in element:意味着x值將是T1或T2 t1和t2的不元件。

如果x = T1然後調用if語句x in t1 and x in t2將檢查if t1 is a element of t1if t1 is a element of t2因爲兩者都是元組的元組的元組不能夠是不可能的。所以你的if語句不會被調用。所以打印將會執行永不
同樣會發生對於x = T2

您可以使用Countercollections用於獲取路口這樣的:

>>> from collections import Counter 
>>> a = Counter((1, 2, 3, 4, 4, 5, 5)) 
>>> b = Counter((4, 4, 5, 6, 7, 8)) 
>>> tuple(a & b) 
    (4,5)