我最近开始学习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)
答案 0 :(得分:1)
我可以看到您的代码存在两个主要问题:
i
遍历第一个列表元素的 indices ,所以它是你在第二个列表中查找的那些索引,而不是元素本身。
在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