在 Python 列表中查找重复项的索引

在 Python 中查找列表中重复项的索引

Find the indices of duplicate items in a List in Python

要查找列表中重复项的索引:

  1. 使用列表推导式迭代列表enumerate()
  2. 检查每个项目是否等于给定值。
  3. 返回匹配项的索引。
主程序
def find_indices(l, value): return [ index for index, item in enumerate(l) if item == value ] # 👇️ [0, 2, 3] print(find_indices(['one', 'two', 'one', 'one'], 'one')) # 👇️ [] print(find_indices(['one', 'two', 'one', 'one'], 'abc'))
如果您需要指定start索引,请向下滚动到下一个副标题。

我们使用该enumerate()函数来访问当前迭代的索引。

enumerate函数接受一个可迭代对象并返回一个包含元组的枚举对象,其中第一个元素是索引,第二个元素是相应的项目

主程序
my_list = ['bobby', 'hadz', 'com'] for index, item in enumerate(my_list): print(index, item) # 👉️ 0 bobby, 1 hadz, 2 com

在每次迭代中,我们检查当前项目是否等于给定值。

主程序
def find_indices(l, value): return [ index for index, item in enumerate(l) if item == value ]

如果满足条件,我们返回相应的索引。

函数返回的列表包含原始列表中值的所有索引。

在具有起始索引的列表中查找重复项的索引

如果您需要在具有起始索引的列表中查找重复项的索引:

  1. 使用while True循环进行迭代,直到找到该项目的出现。
  2. 使用该list.index()方法通过指定索引获取每次出现的索引start
  3. 将匹配的索引附加到新列表。
主程序
def find_indices(l, value, start=0): indices = [] while True: try: index = l.index(value, start) start = index + 1 indices.append(index) except ValueError: break return indices # 👇️ [2, 3, 5] print(find_indices(['a', 'b', 'a', 'a', 'b', 'a'], 'a', 1)) # 👇️ [3, 5] print(find_indices(['a', 'b', 'a', 'a', 'b', 'a'], 'a', 3)) # 👇️ [5] print(find_indices(['a', 'b', 'a', 'a', 'b', 'a'], 'a', 4)) # 👇️ [] print(find_indices(['a', 'b', 'a', 'a', 'b', 'a'], 'a', 6))

该函数采用可选start索引。

索引start是我们开始在列表中查找给定值出现的索引。

list.index()方法返回其值等于提供的参数的第一个项目的索引。

list.index()方法采用可选参数并开始从索引`start` 开始查找指定值。 start
主程序
print(['a', 'b', 'c', 'a'].index('a', 1)) # 👉️ 3

ValueError如果列表中没有这样的项目,该方法将引发一个。

如果ValueError引发 a,我们会跳出循环while并返回
indices列表。

主程序
def find_indices(l, value, start=0): indices = [] while True: try: index = l.index(value, start) start = index + 1 indices.append(index) except ValueError: break return indices

否则,我们将start索引递增1并将索引添加到
indices列表中。

list.append ()方法将一个项目添加到列表的末尾。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: