蟒蛇从项目多次出现另一个列表中都
问题描述:
相关删除列表中的元素:Remove all the elements that occur in one list from another蟒蛇从项目多次出现另一个列表中都
我有listA的[1, 1, 3, 5, 5, 5, 7]
和数组listB [1, 2, 5, 5, 7]
,我想减去出现从项目listA的的。结果应该是一个新的列表:[1, 3, 5]
注:
-
1
有2次出现为listA和曾经在数组listB,现在看来2-1 = 1倍 -
2
并没有出现在listA的,所以没有什么发生 -
3
停留1次出现的,如在其listA的未在数组listB -
5
发生3次,并且在数组listB 2,所以现在它发生3-2 = 1倍 -
7
OC现在它会出现1-1 = 0次
这是否有意义?
答
在这样的情况下列表理解应始终使用:
listA = [1, 1, 3, 5, 5, 5, 7]
listB = [1, 2, 5, 5, 7]
newList = [i for i in listA if i not in listB or listB.remove(i)]
print (newList)
下面是结果:
[1, 3, 5]
答
这里是为这些新的Python
非列表理解版本listA = [1, 1, 3, 5, 5, 5, 7]
listB = [1, 2, 5, 5, 7]
for i in listB:
if i in listA:
listA.remove(i)
print listA
副作用通常不用于列表解析。 @Dart答案更直接,并且没有修改'listB'的可能不良副作用。 OP只需要从'listA'中删除的项目。这并没有从'listA'中删除项目,但生成了一个新列表。 –
@MarkTolonen好评。如果OP指定了他/她想要的结果,我可以调整我的答案。 –
谢谢 - 这正是我的意思。看到镖解决方案是直截了当的,但我正在寻找这种单线 – ihadanny