我有一个清单
/
当我尝试使用下面的代码
迭代打印索引和索引相关的值时array_list=[-37, -36, -19, -99, 29, 20, 3, -7, -64, 84, 36, 62, 26, -76, 55, -24, 84, 49, -65, 41]
我得到以下输出:
for value in array_list:
print(array_list.index(value), array_list[array_list.index(value)])
在索引16处,它给出了索引值为9。 我不知道为什么它应该给我16作为指数值。
我该如何解决这个问题?
答案 0 :(得分:4)
list.index(..)
返回list
中第一次出现的元素的值。例如:
>>> my_list = [1,2,3,1,2,5]
>>> [(i, my_list.index(i)) for i in my_list]
[(1, 0), (2, 1), (3, 2), (1, 0), (2, 1), (5, 5)]
# Here, 0th index element is the number
# 1st index element is the first occurrence of number
如果要在迭代期间获取元素的位置,则应使用enumerate
进行迭代。例如:
>>> [(i, n) for n, i in enumerate(my_list)]
[(1, 0), (2, 1), (3, 2), (1, 3), (2, 4), (5, 5)]
# Here, 0th index element is the number
# 1st index element is the position in the list
您可以参考Python's List Document,其中包含:
<强> list.index(x)的强>
返回值为x的第一个项目列表中的索引。如果没有这样的项目,则会出错。
答案 1 :(得分:0)
您要求它获取具有该值的第一个条目的索引(然后使用该索引)。如果您想要迭代(for循环)找到它的索引,请尝试for i,value in enumerate(array_list)
。迭代列表会产生它包含的项目,而不是引用回列表的内容。