如果.index方法的项为0,python为什么返回索引0?

2024-10-04 11:32:00 发布

您现在位置:Python中文网/ 问答频道 /正文

[ss]https://i.imgur.com/dyggsaJ.png

大家好, 我写了一份清单

l = [0, 0, 0, 1]

并要求Python打印每个项目的索引,如下所示

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

它回来了

0
0
0
3

请注意,对于所有为0的元素,它如何返回0,但在项目为1时返回正确的索引。 同样地

l2 = [0, 0, 3, 2, 5]
for i in l2:
   print(l2.index(i))
# returns 0, 0, 2, 3, 4

l3 = [2, 3, 4, 0, 0]
for i in l3:
   print(l3.index(i))
# returns 0, 1, 2, 3, 3. what?

但是

l4 = [1, 2, 0, 3, 4]
for i in l4:
   print(l4.index(i))
# returns 0, 1, 2, 3, 4

似乎只要一行中有两个元素为0,循环就会变得古怪。有没有这个名字或解释?我把代码写错了吗


Tags: 项目inhttpscom元素forindexss
3条回答

你搞错了。如果您尝试:

l = [2, 2, 2, 1]

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

您还将获得:

0
0
0
3

这是因为在ierations期间,您告诉python打印0的索引三次。Python将只打印它看到的第一个与指定的索引相等的索引

如果在迭代每个条目时需要列表的索引和项,可以尝试以下两个选项之一-

备选案文1:

for i in range(len(l)): print(i)

备选案文2:

for i,v in enumerate(l):
     print(i)

以上两个选项都将给出结果0 1 2 3

documentation所示

列表.索引(x[,开始[,结束]]) 返回“值等于x的第一个项的列表中从零开始的索引”

因此,如果列表中有两个或多个元素具有相同的值,那么您将始终获得第一次出现的索引。换句话说,您的代码按预期工作

相关问题 更多 >