Python|列表中的重复元素索引
在使用Python列表时,有时我们需要检查重复项,有时还可能需要跟踪它们的索引。这种应用可以发生在日常编程中。让我们讨论一些可以解决这个问题的方法。
方法 #1:使用循环 + set()
可以使用上述功能的组合来解决此任务。在这里,我们只是插入集合中的所有元素,然后比较每个元素在实际列表中的存在。如果它是第二次或更多,则将索引添加到结果列表中。
# Python3 code to demonstrate working of
# Duplicate element indices in list
# Using set() + loop
# initializing list
test_list = [1, 4, 5, 5, 5, 9, 1]
# printing original list
print("The original list is : " + str(test_list))
# Duplicate element indices in list
# Using set() + loop
oc_set = set()
res = []
for idx, val in enumerate(test_list):
if val not in oc_set:
oc_set.add(val)
else:
res.append(idx)
# printing result
print("The list of duplicate elements is : " + str(res))
输出 :
The original list is : [1, 4, 5, 5, 5, 9, 1]
The list of duplicate elements is : [3, 4, 6]
方法#2:使用列表理解+列表切片
此方法是执行此任务的一种替代方法。在此我们只使用列表切片检查非重复元素并继续添加索引以防重复。
# Python3 code to demonstrate working of
# Duplicate element indices in list
# Using list comprehension + list slicing
# initializing list
test_list = [1, 4, 5, 5, 5, 9, 1]
# printing original list
print("The original list is : " + str(test_list))
# Duplicate element indices in list
# Using list comprehension + list slicing
res = [idx for idx, val in enumerate(test_list) if val in test_list[:idx]]
# printing result
print("The list of duplicate elements is : " + str(res))
输出 :
The original list is : [1, 4, 5, 5, 5, 9, 1]
The list of duplicate elements is : [3, 4, 6]