list append给出None作为结果

时间:2014-10-01 22:34:05

标签: python list python-2.7 append

我刚写了一个函数,它应该打印出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

1 个答案:

答案 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

这避免了以下陷阱:

  1. 返回None而不是列表交集。
  2. None的每个元素返回list_2