创建比较不等列表的函数

时间:2017-08-29 03:44:55

标签: python python-3.x

捎带this question

我想创建一个比较两个列表的函数:

def test(a,b):
    c=[]
    for item in b:
        if item in a:
            return c[item]

上面的函数给出了一个错误:列表索引超出范围,如果我定义和b: A = [2,3,5,8] B = [4,5,6,9,8]

为什么会这样?

3 个答案:

答案 0 :(得分:1)

您的代码存在一些问题:

  1. c[item]将引用"项目" c列表的索引。它不会添加" item"的值。到你想要的列表。例如:5是两个列表中的第一个公共值。 c[5]引用c数组中不存在的第6个元素;因此你的错误。

  2. 您正在使用return来结束函数调用,并且只是将c[5]的值传递给函数的调用者。

  3. 尝试以下方法:

    def test(a,b):
        c=[]
        for item in b:
            if item in a:
                c.append(item)
        return c
    

    .append(item)会将item的值添加为引用列表末尾的新元素。

    循环完成后,该函数现在将按预期返回整个c列表。

    使用a = [2, 3, 5, 8]b = [4, 5, 6, 9, 8]的示例列表,正确调用test(a, b)返回[5, 8]

答案 1 :(得分:0)

您正在尝试访问c中不存在的项目。 尝试运行它,看看你的输出是什么:

a=[2,3,5,8]
b=[4,5,6,9,8]
c=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
for item in b:
    if item in a:
        print(c[item])

你得到第5项和第8项 - 来自c的'f'和'i'。 如果这些元素存在,这种方法很有效,但如果不存在则不然。

答案 2 :(得分:0)

对于您的算法,您的列表需要具有相同的长度。但你可以肯定地改进它来比较可变长度列表。