我在Python 2.7中工作
我试图迭代2个不等长的列表,我想创建一个新列表,包含匹配的元素(相同位置的相同元素),当元素不匹配时,我需要有一些文本以及错过匹配元素的位置。
+
输出匹配
list1=[1,2,3,4]
list2=[1,2,3,5,6]
结果:
match=[[b] for a, b in zip(list1, list2) if a==b]
但我不知道,在单行中,如何标记不匹配:
[1,2,3]
或
[1,2,3,"nomatch-pos4"]
它是否会迭代2个列表长度的最大值或最小值无关紧要。
答案 0 :(得分:1)
它首先找到两个列表中的最小值并迭代较短的列表并检查列表中的元素是否与相同位置的其他列表匹配。检查以下代码:
match = [list1[i] if list1[i] == list2[i] else 'nomatch-pos'+str(i+1) for i in range(0,min(len(list1),len(list2)))]