簡體   English   中英

python:函數與元組

[英]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.

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