1
在我的情况下,重复项目不是重现在一个列表中的项目,而是在另一个列表中的相同位置中。例如:在少数列表中查找重复项目
list1 = [1,2,3,3,3,4,5,5]
list2 = ['a','b','b','c','b','d','e','e']
list3 = ['T1','T2','T3','T4','T3','T4','T5','T5']
因此,所有3个列表中真正重复的位置是[2,4]和[6,7]。因为在列表1中重复3,所以在列表2中'b'在与列表1相同的位置重复,列表3'T3'中。在第二种情况5中,e,T5表示其列表中相同位置的重复项目。我很难在一步中“自动”呈现结果。
1)我发现第一个列表
# Find Duplicated part numbers (exact maches)
def list_duplicates(seq):
seen = set()
seen_add = seen.add
# adds all elements it doesn't know yet to seen and all other to seen_twice
seen_twice = set(x for x in seq if x in seen or seen_add(x))
# turn the set into a list (as requested)
return list(seen_twice)
# List of Duplicated part numbers
D_list1 = list_duplicates(list1)
D_list2 = list_duplicates(list2)
2副本)然后我发现给出重复的位置,并期待在该位置在第二列表
# find the row position of duplicated part numbers
def list_position_duplicates(list1,n,D_list1):
position = []
gen = (i for i,x in enumerate(data) if x == D_list1[n])
for i in gen: position.append(i)
return position
# Actual calculation find the row position of duplicated part numbers, beginning and end
lpd_part = list_position_duplicates(list1,1,D_list1)
start = lpd_part[0]
end = lpd_part[-1]
lpd_parent = list_position_duplicates(list2[start:end+1],0,D_list2)
所以在步骤2中,我需要把n(在列表中找到重复的位置),我想自动执行此步骤,以在列表中的相同位置具有重复元素的位置。对于同一时间的所有重复,而不是一个一个“手动”。我认为它只是需要一个for循环或如果,但我是Python的新手,我尝试了很多组合,并没有奏效。