[英]python: function with tuples
我正在嘗試制作一個函數,該函數從參數獲取的兩個元組中打印公共元素。 你能給我一個曲目嗎?
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))
使用一組:
tuple(set((1,2,3)).intersection((1,4,5,2)))
結果:
(1, 2)
我認為您分配元素是問題。 元素本身是一個元組,因此您的if語句將評估t1中是否有一個元組,而不是t1中的元組。 嘗試以一種方式獲取元組中的所有元素:
element = []
element.extend(t1)
element.extend(t2)
現在,您的if語句應該起作用。 另外,您的印刷聲明很奇怪。
當使用element = t1,t2
此語句是在創建元組。 例:-
>>> x=(3,4)
>>> y=(7,3)
>>> z=x,y
>>> z
((3, 4), (7, 3))
for x in element:
調用for x in element:
意味着x值將是t1或t2而不是t1和t2的元素 。
如果x = t1,則調用x in t1 and x in t2
語句將檢查if t1 is a element of t1
以及if t1 is a element of t2
這是不可能的,因為兩者都是元組而不是元組的元組。 因此,您的if語句將不會被調用。 因此,將永遠不會執行打印。
x = t2也會發生同樣的情況
您可以使用collections
Counter
來獲得交集,如下所示:
>>> 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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.