Python:Iterables的交集,索引值相等

Python:Iterables的交集,索引值相等,python,function,methods,generator,yield,Python,Function,Methods,Generator,Yield,我需要一个函数,它需要任意数量的iterable。为此,您可以假设这些iterable以相同的顺序输出它们的元素 我想要一个函数,它返回元素的列表,这些元素位于输入iterables的相同位置(相同索引), 例如对于[1,2,3]和[1,“x”,3],将返回1和3。 示例:相交((1,2,3)、(1,2,3)、(1,2,3)、(1,2,3)、(1,2,3)、(1,2,3)、(1,2,3))将返回[1,2,3] 我试过了,但我认为它完全错了 def intersect(*args): """Doc

我需要一个函数,它需要任意数量的iterable。为此,您可以假设这些iterable以相同的顺序输出它们的元素

我想要一个函数,它返回元素的列表,这些元素位于输入iterables的相同位置(相同索引), 例如对于[1,2,3]和[1,“x”,3],将返回1和3。 示例:相交((1,2,3)、(1,2,3)、(1,2,3)、(1,2,3)、(1,2,3)、(1,2,3)、(1,2,3))将返回[1,2,3]

我试过了,但我认为它完全错了

def intersect(*args):
"""Docstring"""
ausgabe = []
anzahlderlisten = len(args)
count = 1
if(anzahlderlisten == 1):
    return args[0]
if(anzahlderlisten == 0):
    return []

längsteliste = args[0]
while count < anzahlderlisten:
    for i in längsteliste:
        if not i in args[count] and längsteliste.index(i) == args[count].index(i):
            print("db")
            if not(i in ausgabe):
                print("db")
                ausgabe.append(i)
        count = count + 1
    return ausgabe
def intersect(*args):
“文档字符串”
ausgabe=[]
anzahlderlisten=len(args)
计数=1
如果(anzahlderlisten==1):
返回参数[0]
如果(anzahlderlisten==0):
返回[]
längsteliste=args[0]
当count
一种可能性是:

def all_same(items):       
    return all(item == items[0] for item in items[1:])

def get_agreeing(*iterables):
    assert len(iterables) >= 2
    return (row[0] for row in zip(*iterables) if all_same(row))


print(tuple(get_agreeing(range(3), range(1, 4), range(3))))
print(tuple(get_agreeing(range(3), (0, 4, 2), (1, 0, 2))))
get_agreement
使用可变参数,这意味着取任意数量的参数,将它们放入一个iterable中,并将其传递给函数。这是通过*语法完成的

然后,我们再次使用星号将这些参数传递给zip函数,传递方式与传递给
get\u agreement
所以,如果你把iterables看作列向量,你可以把所有的第一个元素看作一行。对于此行,您只需要检查所有元素是否相同,如果相同,则结果生成器将返回其中的第一个元素

如果您想了解有关可变参数或生成器的更多信息,请参阅:


我不知道这里的问题是什么,没有尝试,也没有期望的输出,也没有当前的输出。现在您添加了一些代码-这很好-但您认为它不好。是什么让你这么想的?因为它不起作用。。。太复杂了