python从另一个列表中删除列表中的元素,其中两个列表中都有多个项目
有关: 我有listApython从另一个列表中删除列表中的元素,其中两个列表中都有多个项目,python,list,Python,List,有关: 我有listA[1,1,3,5,5,5,7]和listB[1,2,5,5,7],我想从listA中减去项目的出现次数。结果应该是一个新列表:[1,3,5] 注: 1在列表A中出现过两次,在列表B中出现过一次,现在它出现了2-1=1次 2没有出现在listA中,因此没有发生任何事情 3保留1次,因为它不在列表B中 5在列表A中出现了3次,在列表B中出现了2次,所以现在它出现了3-2=1次 7在listA和listB中分别出现一次,因此现在它将出现1-1=0次 这有意义吗 在此类情况下,应始
[1,1,3,5,5,5,7]
和listB[1,2,5,5,7]
,我想从listA中减去项目的出现次数。结果应该是一个新列表:[1,3,5]
注:
1
在列表A中出现过两次,在列表B中出现过一次,现在它出现了2-1=1次2
没有出现在listA中,因此没有发生任何事情3
保留1次,因为它不在列表B中5
在列表A中出现了3次,在列表B中出现了2次,所以现在它出现了3-2=1次7
在listA和listB中分别出现一次,因此现在它将出现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只希望从列表A
中删除项目。这并没有从listA
中删除项目,而是生成了一个新的列表。@MarkTolonen好话。如果OP指定他/她想要什么作为输出,我可以调整我的答案。谢谢-这正是我的意思@看,dart的解决方案是直截了当的,但我一直在寻找这种单线快速的解决方案——在其他地方找不到类似的答案