【问题标题】:Comparing two lists keeping duplicates but removing same items in indexed positions in Python比较两个列表保持重复但在 Python 中的索引位置删除相同的项目
【发布时间】:2026-01-19 04:20:03
【问题描述】:

我有两个列表:

List1 = ['One', 'Two', 'Three', 'Five', 'Seven', 'Ten', ' Two', 'One'] 
List2 = ['Nine', 'Two', 'Seven', 'Five' , 'Five', 'Three',  'One', 'One']

列表大小相同。

我想要的是,通过索引将 list1 与 list2 匹配,如果相应的索引项相同,则删除 list2 中的匹配项。否则它不应该删除这些项目。 Newlist2 中的非索引位置可能存在重复项。

这是我所期望的:

List1:#Same as the previous

NewList2 = ['Nine', 'Seven', 'Five', 'Three', 'One']

【问题讨论】:

    标签: python list indexing duplicates


    【解决方案1】:
    NewList2 = [ y for (x, y) in zip(List1, List2) if x != y ] 
    

    【讨论】:

      【解决方案2】:

      使用列表理解和 zip:

      list1 = ['One', 'Two', 'Three', 'Five', 'Seven', 'Ten', ' Two', 'One'] 
      list2 = ['Nine', 'Two', 'Seven', 'Five' , 'Five', 'Three',  'One', 'One']
      
      new_list = [ele2 for ele1, ele2 in zip(list1, list2) if ele1 != ele2]
      print(new_list)
      

      输出 ['Nine', 'Seven', 'Five', 'Three', 'One']

      【讨论】:

        【解决方案3】:

        你可以的

        ls1 = ['One', 'Two', 'Three', 'Five', 'Seven', 'Ten', ' Two', 'One'] 
        ls2 = ['Nine', 'Two', 'Seven', 'Five' , 'Five', 'Three',  'One', 'One']
        new_list = [v for i , v in enumerate(ls2) if v != ls1[i]]
        

        输出

        ['Nine', 'Seven', 'Five', 'Three', 'One']
        

        【讨论】:

          最近更新 更多