从列表中删除对象

时间:2017-11-23 00:04:46

标签: python python-3.x

我不确定为什么在测试此功能时出现错误,指出索引超出范围。有人可以帮我解决这个问题吗?

def intersect_lists(L1, L2):
'''(list, list) -> list
Return L1 with items not in L2 removed.
>>> intersect_lists([1, 2, 3, 4, 5, 6], [4, 2, 6])
[2,4,6]
'''
new_list = []

for item in range(len(L1)):
    if L1[item] == L2[item]:
        new_list.append(L1[item])
return new_list

2 个答案:

答案 0 :(得分:3)

使用列表理解:

def intersect_lists(L1, L2):
   return [i for i in L1 if i in L2]

但是,您的特定错误是由于您在L1的长度上进行迭代,这最终会导致索引错误,因为L1的长度大于L2。

没有列表理解:

def intersect_lists(L1, L2):
   final_list = []
   for i in L1:
      if i in L2:
         final_list.append(i)

   return final_list

答案 1 :(得分:1)

或布尔和:

list(set(L1) & set(L2))