在 Python 中查找列表中重复项的索引
Find the indices of duplicate items in a List in Python
要查找列表中重复项的索引:
- 使用列表推导式迭代列表
enumerate()
。 - 检查每个项目是否等于给定值。
- 返回匹配项的索引。
主程序
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 ]
如果满足条件,我们返回相应的索引。
函数返回的列表包含原始列表中值的所有索引。
在具有起始索引的列表中查找重复项的索引
如果您需要在具有起始索引的列表中查找重复项的索引:
- 使用
while True
循环进行迭代,直到找到该项目的出现。 - 使用该
list.index()
方法通过指定索引获取每次出现的索引start
。 - 将匹配的索引附加到新列表。
主程序
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 ()方法将一个项目添加到列表的末尾。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: