python程序返回空lis

2024-04-28 19:23:49 发布

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

Tags: of函数代码in列表fordef编程
3条回答

在您的示例中,它应该返回一个空列表,因为没有公共数字。你知道吗

你想做:

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]

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

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

我可以看到你的代码有两个主要问题:

  1. i迭代第一个列表元素的索引,因此在第二个列表中查找的是这些索引,而不是元素本身。

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

相关问题 更多 >