【问题标题】:Issue With Getting Indexes of Duplicate Elements in A List(Python)获取列表中重复元素索引的问题(Python)
【发布时间】:2022-08-17 15:23:49
【问题描述】:

我有这个列表: [1, 2, 3, 6, 1, 3]

我试图获取重复的列表元素的索引。在这种情况下,代码应该返回 0、4,因为在第 0 和第 4 索引处有重复的元素。但是,当我运行我的代码时,我的输出仅显示第 4 个索引的 4,并且也不会打印出第 0 个索引。谁能帮我找出代码中的问题?

lst = [1, 2, 3, 6, 1, 3]

oc_set = set()
res = []
for idx, val in enumerate(lst):
    if val not in oc_set:
        oc_set.add(val)         
    else:
        res.append(idx)     

print(res)

输出:

[4] [4]

  • answer 有帮助吗?
  • 在第一个副本之后,您不会从 oc_set 中删除第一个副本。附加第二个 1 后,3 再次位于第 4 个索引中,并且也添加到 res 中。您只输入了副本而不是“原始”值
  • 此代码将查找重复元素的索引,但不会查找该元素第一次出现的索引。

标签: python list


【解决方案1】:

代码所做的是为您提供重复值的索引,因为在数组中 res 仅存储重复的索引。要打印重复值的索引,您可以使用下面的代码。

lst = [1, 2, 3, 6, 1, 3]

oc_set = set()
res = []
for idx, val in enumerate(lst):
    if val not in oc_set:
        oc_set.add(val)         
    else:
        res.append(val)     

print(res)

ans = []
for idx, val in enumerate(lst):
    if val in res:
        ans.append(idx)
print(ans)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 2018-07-06
    相关资源
    最近更新 更多