[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,循环就会变得古怪。有没有这个名字或解释?我把代码写错了吗
你搞错了。如果您尝试:
您还将获得:
这是因为在ierations期间,您告诉python打印
0
的索引三次。Python将只打印它看到的第一个与指定的索引相等的索引如果在迭代每个条目时需要列表的索引和项,可以尝试以下两个选项之一-
备选案文1:
for i in range(len(l)): print(i)
备选案文2:
以上两个选项都将给出结果0 1 2 3
如documentation所示
列表.索引(x[,开始[,结束]]) 返回“值等于x的第一个项的列表中从零开始的索引”
因此,如果列表中有两个或多个元素具有相同的值,那么您将始终获得第一次出现的索引。换句话说,您的代码按预期工作
相关问题 更多 >
编程相关推荐