为什么Python列表没有连续重复元素的唯一索引?

时间:2019-04-14 14:19:29

标签: python list indexing

我正在存储一个包含元素[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

3 个答案:

答案 0 :(得分:0)

索引无法正常工作

.index()不会返回数组中该项的索引,而是返回第一个索引或值的位置(请参见this)。 / p>

在您的代码中

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

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

实际上发生的是,每次搜索值i的第一次出现时。在列表l = [0, 1, 2, 3, 4, 4]中,当您到达最后4个位置时,您实际上要求Python给您“列表4l的第一个出现”,因此python为您提供了“索引“ 4。

在JavaScript中,它等效于array.indexOf(val)

您在寻找什么: enumerate函数

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

答案 1 :(得分:0)

list_name.index(i)返回该元素的第一个出现索引
因此,如果您的列表是:[1,2,3,4,5,6,5]
通过遍历打印出的l.index(i),输出将是。
      0       1个        2        3     4     5     4
因为5在列表中的位置4上是第一个出现。

答案 2 :(得分:0)

如果要获取列表中元素的位置,请使用enumerate()。

或者,如果您只想打印值:

for i in l:
    print(i)

文档:

https://docs.python.org/3/tutorial/datastructures.html?highlight=list%20index

  

list.index(x [,start [,end]])

     

第一项的列表中返回从零开始的索引   等于x。如果没有此类项目,则会引发ValueError。

https://docs.python.org/3/library/functions.html#enumerate

  

枚举(可迭代,开始= 0)

     

返回一个枚举对象。可迭代必须是一个序列,一个迭代器,   或其他支持迭代的对象。 下一步()方法   enumerate()返回的迭代器的返回一个包含一个   计数(从默认为0开始),并从   遍历迭代。