我想做一個函數,它打印由參數採取的兩個元組的公共元素。 你能給我一個曲目嗎?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))
我想做一個函數,它打印由參數採取的兩個元組的公共元素。 你能給我一個曲目嗎?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))
我認爲你的元素分配是問題。元素本身就是一個元組,因此如果語句正在評估一個元組是否在t1中,那麼它不是,而不是元素本身。嘗試獲取元組中所有元素的方法:
element = []
element.extend(t1)
element.extend(t2)
現在,您的if語句應該可以工作。你的印刷聲明也很奇怪。
使用一組:
tuple(set((1,2,3)).intersection((1,4,5,2)))
結果:
(1, 2)
在使用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 t1
也if t1 is a element of t2
因爲兩者都是元組的元組的元組不能夠是不可能的。所以你的if語句不會被調用。所以打印將會執行永不。
同樣會發生對於x = T2
您可以使用Counter
從collections
用於獲取路口這樣的:
>>> 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)