2014-10-01 22 views
0

我刚写了一个函数,应该打印出2个字典有共同的所有值。 因此,如果使用下面的行中我的功能:list append给出None作为结果

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

我想可以断言这不完全是重复的。为什么.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的元素。
相关问题