这是实践例子:Python列表减法
写一个函数
(list1, list2)
,在两个列表需要作为参数,并返回一个列表,是去除list1
元素,可以在list2
发现的结果。
为什么此函数返回[1, 3, 4]
而不是[4]
正如我以为会这样?我认为这与list1.remove()
有关。我想这是显而易见的,但我看不到它。
它适用于这些例子:
subtractList (['a', 'b', 'c', 'd'], ['x', 'y', 'z']) =
['a', 'b', 'c', 'd']
subtractList([1,2,3,4,5], [2, 4]) =
[1, 3, 5]
,但未能在此:
subtractList(range(5), range(4))
而且我注意到它从列表中删除仅偶数。
下面是代码:
def subtractList(list1,list2):
list1 = list(list1)
list2 = list(list2)
for i in list1:
if i in list2:
list1.remove(i)
return list1
我已经解决了这个做法有:
def subtractList(list1,list2):
new_list = []
list1 = list(list1)
list2 = list(list2)
for i in list1:
if i not in list2:
new_list.append(i)
return new_list
请修复您的格式,尤其是你的压痕。现在它很难帮助你。 – Ffisegydd
你在使用Python 3还是Python 2? – Ffisegydd
此外,由于您已经通过列表(范围(x)也是一个列表),将它们再次变成列表('list1 = list(list1)')是不必要的 – thumbtackthief