Python 找出两个列表之间的差异,并打印它们在列表中的位置和值

Python 找出两个列表之间的差异,并打印它们在列表中的位置和值,python,Python,我试图找出两个列表之间的差异,但我也想知道差异项的位置 我的脚本没有产生我想要的结果 例如: 这是名单 lst1 = ['dog', 'cat', 'plant', 'book', 'lamp'] lst2 = ['dog', 'mouse', 'plant', 'sock', 'lamp'] 在这里,我得到了位置和价值 new_lst1 = [f"{i}, {v}" for i, v in enumerate(lst1)] new_lst2 = [f"{i},

我试图找出两个列表之间的差异,但我也想知道差异项的位置

我的脚本没有产生我想要的结果

例如:

这是名单

lst1 = ['dog', 'cat', 'plant', 'book', 'lamp']
lst2 = ['dog', 'mouse', 'plant', 'sock', 'lamp']
在这里,我得到了位置和价值

new_lst1 = [f"{i}, {v}" for i, v in enumerate(lst1)]
new_lst2 = [f"{i}, {v}" for i, v in enumerate(lst2)]
然后我想找出两个新列表之间的差异

def Diff(new_lst1, new_lst2):
    (list(set(new_lst1) - set(new_lst2)))
之后,我想打印结果

print(new_lst1)
然而,我得到:

['0, dog', '1, cat', '2, plant', '3, book', '4, lamp']

对不起,解释得太长了

您拆分了
新的\u lst1
,但保留了
新的\u lst2
不变。首先,这是一个运行时错误,而不是您提到的输出。如果它真的起作用,它将提供语义不兼容的元素进行比较。摆脱
拆分

def Diff(new_lst1, new_lst2):
    return list(set(new_lst1) - set(new_lst2))

# Afterwards, I want to print the results.
print(Diff(new_lst1, new_lst2))
输出:

['1, cat', '3, book']

你现在有了正确的信息;按口味编排格式。

您似乎正在寻找以下列表的最新版本:

>>> set(enumerate(lst1)) ^ set(enumerate(lst2))
{(1, 'mouse'), (1, 'cat'), (3, 'book'), (3, 'sock')}
除非你只是在寻找职位:

>>> [i for i, word in enumerate(lst1) if lst2[i] != word]
[1, 3]

如果愿意,您可以将以下代码重构为函数,但这应该可以完成您正在尝试的工作。请记住,在python中,列表中的第一项从0开始。所以当它说差值为1时,它意味着第二项

lst1 = ['dog', 'cat', 'plant', 'book', 'lamp']
lst2 = ['dog', 'mouse', 'plant', 'sock', 'lamp']
varying_pos = []

for index, item in enumerate(lst1):
   if item != lst2[index]:
      message = str(index) + ', ' + item
      varying_pos.append(message)

print("The 2 lists vary at position:")

for value in varying_pos:
    print(value)

[(i,(v1,v2))对于枚举(zip(lst1,lst2))中的i,(v1,v2)),如果v1!=v2]
或某些变量,取决于您想要的确切输出格式受需要散列的元素限制,对称差异是一个简洁的解决方案。对于混淆,我深表歉意,但感谢您提供了解决方案。这很有效!