python:带元组的函数

2024-03-28 18:27:15 发布

您现在位置: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))

Tags: and函数in元素for参数ifdef
3条回答

使用集合:

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:意味着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

您可以使用Counterfrom 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)

相关问题 更多 >