Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python从另一个列表中删除列表中的元素,其中两个列表中都有多个项目_Python_List - Fatal编程技术网

python从另一个列表中删除列表中的元素,其中两个列表中都有多个项目

python从另一个列表中删除列表中的元素,其中两个列表中都有多个项目,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次 这有意义吗 在此类情况下,应始

有关:

我有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次

  • 这有意义吗

    在此类情况下,应始终使用列表理解:

    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的解决方案是直截了当的,但我一直在寻找这种单线快速的解决方案——在其他地方找不到类似的答案