Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果.index方法的项为0,python为什么返回索引0?_Python_List_For Loop_Indexing - Fatal编程技术网

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

如果.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]

[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]
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)