python程序返回空列表

时间:2016-10-27 12:51:34

标签: python

我最近开始学习Python编程,我编写了一个简单的函数,它接受两个列表并返回一个新的列表,它将两个列表重新组合在一起。但是,当我运行代码时,它返回一个空列表。请帮忙:

x = [1, 2, 3]
y = [4, 5, 6]


def reunion(list_of_numbers1,list_of_numbers2):
    union_list = list()
    for i in range(0,len(list_of_numbers1)):
        if list_of_numbers1[i] in list_of_numbers2 is True:
            union_list.append(i)
            del list_of_numbers1[i]
            del list_of_numbers2[i]
    return union_list
z = reunion(x,y)
print(z)

3 个答案:

答案 0 :(得分:1)

我可以看到您的代码存在两个主要问题:

  1. i遍历第一个列表元素的 indices ,所以它是你在第二个列表中查找的那些索引,而不是元素本身。

  2. 在Python中,删除正在迭代的列表元素是有问题的:Python: Removing list element while iterating over list

答案 1 :(得分:1)

在你的例子中,它应该返回一个空列表,因为没有常用数字。

你想这样做:

for number in list_of_numbers1:
    if number in list_of_numbers2:
        union_list.append(number)

这可能会增加重复数据。为了避免这些,

for number in list_of_numbers1:
    if number in list_of_numbers2 and number not in union_list:
        union_list.append(number)

但是,我会这样做

return [number for number in list_of_numbers1 if number in list_of_numbers2]

答案 2 :(得分:1)

这样的事情会给你一个良好的开端:

x = [1, 2, 3, 2]
y = [3, 5, 2, 3]

def reunion(list1, list2):
    result = []
    for number in list1:
        if number in list2 and number not in result:
            result.append(number)
    return result

my_list = reunion(x, y)
print(my_list)

输出:

[2, 3]

或者离您更近的代码:

def reunion(list1, list2):
    result = []
    for i in range(0, len(list1)):
        if list1[i] in list2 and list1[i] not in result:
            result.append(list1[i])
    return result