📜  Python|列表中的重复元素索引

📅  最后修改于: 2022-05-13 01:55:37.867000             🧑  作者: Mango

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]