比较Python中保留重复项但删除索引位置相同项的两个列表

2024-09-28 01:23:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个列表:

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']


Tags: 项目列表onethreesamefivetwoseven
3条回答
NewList2 = [ y for (x, y) in zip(List1, List2) if x != y ] 

使用列表理解和压缩:

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']

你能行

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']

相关问题 更多 >

    热门问题