我正在存储一个包含元素[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
答案 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给您“列表4
中l
的第一个出现”,因此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开始),并从 遍历迭代。