如果.index方法的项为0,python为什么返回索引0?
[ss] 大家好, 我写了一份清单如果.index方法的项为0,python为什么返回索引0?,python,list,for-loop,indexing,Python,List,For Loop,Indexing,[ss] 大家好, 我写了一份清单 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]
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?
但是
似乎只要一行中有两个元素为0,循环就会变得古怪。有没有这个名字或解释?我把代码写错了吗?你搞错了。如果您尝试:
l = [2, 2, 2, 1]
for i in l:
print(l.index(i))
您还将获得:
0
0
0
3
这是因为在iSeries期间,您告诉python打印0
的索引三次。Python将只打印它看到的与指定内容相等的第一个索引。如中所示
列表.索引(x[,开始[,结束]])
返回“值等于x的第一个项的列表中从零开始的索引”
因此,如果列表中有两个或多个元素具有相同的值,那么您将始终获得第一次出现的索引。换句话说,您的代码可以按预期工作。如果您希望在迭代每个条目时获得列表的索引和项目,您可以尝试以下两个选项之一- 备选案文1:
范围内的i(len(l)):
印刷品(一)
备选案文2:
for i,v in enumerate(l):
print(i)
以上两个选项都会给出结果0 1 2 3我假设您的第一个列表应该是
l=[0,0,0,1]
而不是末尾的零?”列表。索引(x[,start[,end]])-在值等于x的第一个项目的列表中返回基于零的索引。“-它完成了它应该做的事情。您的屏幕截图显示l=[0,0,0,1]
你给了我l=[0,0,0,0]
哦,我的糟糕!你说得对,我将修正索引
只返回列表中与给定元素匹配的第一个位置<代码>索引按此处的预期执行
for i,v in enumerate(l):
print(i)