Python 给定一个数字列表,找出列表中的重复数值及其索引位置
在日常编程开发中,经常会遇到需要查找数组中重复元素及其索引位置的情况。本文将详细讨论如何通过Python编程来实现这一任务。
问题描述
给定一个数字列表,我们需要找出列表中所有重复的元素及其索引位置。例如,对于输入列表[1, 2, 3, 4, 2, 5, 1, 6, 3]
,我们需要找到重复的元素1, 2, 3
及它们各自的索引位置。
解决方法
我们可以通过遍历列表的方式来找出重复元素及其索引位置。具体步骤如下:
- 创建一个空字典
indices
,用于存储数字及其索引位置。 - 遍历给定的数字列表,对于每一个数字:
- 如果该数字在字典
indices
中,则将该数字的索引位置添加到对应的值列表中; - 如果该数字不在字典
indices
中,则将该数字添加到字典中,并初始化其值为包含当前索引位置的列表。- 遍历字典
indices
,找出值列表长度大于1的键值对,即为重复元素及其索引位置。
- 遍历字典
下面是Python实现的示例代码:
def find_duplicates(nums):
indices = {}
for index, num in enumerate(nums):
if num in indices:
indices[num].append(index)
else:
indices[num] = [index]
duplicates = {num: idx for num, idx in indices.items() if len(idx) > 1}
return duplicates
# 测试用例
nums = [1, 2, 3, 4, 2, 5, 1, 6, 3]
result = find_duplicates(nums)
print(result)
运行以上代码,输出为:
{1: [0, 6], 2: [1, 4], 3: [2, 8]}
从输出中可以看到,重复的元素1, 2, 3
分别对应的索引位置为[0, 6], [1, 4], [2, 8]
。
总结
通过以上的方法,我们可以轻松地找出给定数字列表中的重复元素及其索引位置。这种方法的时间复杂度为O(n),非常高效。