我刚写了一个函数,它应该打印出2个字典共有的所有值。 所以如果在我的函数中使用以下行:
print list_intersection([1, 3, 5], [5, 3, 1])
输出应为:
[1, 3, 5]
我编写了以下代码来解决这个问题:
def list_intersection(list_1, list_2):
empty_list = []
for number in list_1:
if number in list_2:
return empty_list.append(number)
问题是我只输出None作为输出,但如果我使用以下代码:
def list_intersection(list_1, list_2):
empty_list = []
for number in list_1:
if number in list_2:
return number
我得到两个列表中逐个打印的数字。我不知道为什么我的程序不只是将两个列表中的数字共同放入我的empty_list并返回我的empty_list
答案 0 :(得分:1)
我认为可以断言这不完全是重复的。由于.append()
返回None
的原因,请参阅Alex Martelli的博学answer。
代替你的代码:
def list_intersection(list_1, list_2):
intersection = []
for number in list_1:
if number in list_2:
intersection.append(number)
return intersection
这避免了以下陷阱:
None
而不是列表交集。None
的每个元素返回list_2
。