Python 给定一个数字列表,找出列表中的重复数值及其索引位置

Python 给定一个数字列表,找出列表中的重复数值及其索引位置

Python 给定一个数字列表,找出列表中的重复数值及其索引位置

在日常编程开发中,经常会遇到需要查找数组中重复元素及其索引位置的情况。本文将详细讨论如何通过Python编程来实现这一任务。

问题描述

给定一个数字列表,我们需要找出列表中所有重复的元素及其索引位置。例如,对于输入列表[1, 2, 3, 4, 2, 5, 1, 6, 3],我们需要找到重复的元素1, 2, 3及它们各自的索引位置。

解决方法

我们可以通过遍历列表的方式来找出重复元素及其索引位置。具体步骤如下:

  1. 创建一个空字典indices,用于存储数字及其索引位置。
  2. 遍历给定的数字列表,对于每一个数字:
  • 如果该数字在字典indices中,则将该数字的索引位置添加到对应的值列表中;
  • 如果该数字不在字典indices中,则将该数字添加到字典中,并初始化其值为包含当前索引位置的列表。
    1. 遍历字典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),非常高效。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程