首页 > 解决方案 > 为什么 Python 列表没有连续重复元素的唯一索引?

问题描述

我正在存储一个包含元素 [0, 1, 2, 3, 4, 4] 的列表。当我遍历它并打印每个元素索引时,我的输出是这样的

0
1
2
3
4
4

我只是想如果它只是打印元素所以我尝试了另一个输入 [1,2,3,4,5,6,7] 这一次我得到了正确的索引

0
1
2
3
4
5
6

为什么会发生这种情况,我该如何解决?

n=input()

l=list(input().split())

print(l)

for i in l:
      print(l.index(i))

预期输出:

0
1
2
3
4
5

实际输出:

0
1
2
3
4
4

标签: pythonlistindexing

解决方案


索引未按预期工作

.index()不会返回数组中项目的索引,它会返回值的第一个索引或位置(参见this)。

在您的代码中

l = [0, 1, 2, 3, 4, 4]

for i in l:
      print(l.index(i)) #i is the value itself

实际发生的是,每次它都在搜索 value 的第一次出现i。在 list 中l = [0, 1, 2, 3, 4, 4],当你到达最后 4 个时,你实际上是要求 Python 给你“4列表中第一次出现的l”,所以 python 给你“索引”4。

在 JavaScript 中,它相当于array.indexOf(val).

您似乎在寻找什么枚举函数

for ind, val in enumerate(l):
    ...

推荐阅读