通常,我使用index在列表中查找元素的索引。我制作了这个非常基本的程序,但是没有显示预期的输出。这是我的代码:
store_1 = []
for i in range(8):
mountain_height = int(input())
store_1.append(mountain_height)
print(store_1.index(store_1[-1]))
结果:
0
[0]
Index: 0
0
[0, 0]
Index: 0
0
[0, 0, 0]
Index: 0
0
[0, 0, 0, 0]
Index: 0
6
[0, 0, 0, 0, 6]
Index: 4
5
[0, 0, 0, 0, 6, 5]
Index: 5
2
[0, 0, 0, 0, 6, 5, 2]
Index: 6
4
[0, 0, 0, 0, 6, 5, 2, 4]
Index: 7
如您所见,元素1,元素2和元素3给出了错误的索引,它的索引应该是1、2、3。我试图获取列表中最后添加的元素的索引。 / p>
为什么会这样?我该如何解决这个问题?
答案 0 :(得分:0)
index()返回特定值列表的 first 元素。
因此,对于像您这样的列表:[0,0,0,0,6,5,2,4] list.index(0)总是返回0,无论如何,因为第一个0在liste [0]。
另一个示例,对于这样的列表:[1、2、3、2、1] liste.index(2)总是返回1,从不返回3。因为第一个“ 2”位于索引1。
如果要区分列表中的不同0,我建议使用i的值。
希望有帮助。
答案 1 :(得分:0)
@mahir ,您可以使用以下代码获取输出。
列表中的index()方法始终打印列表中第一个匹配元素的索引。这就是为什么在这3种情况下您得到相同的输出0的原因。
您可能会在列表上看到与 index()方法有关的信息,如下所示。
>>> help(list.index)
Help on method_descriptor:
index(...)
L.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.
>>>
store_1 = []
for i in range(8):
mountain_height = int(input())
store_1.append(mountain_height)
last_index = store_1.index(store_1[-1], -1)
print('Index:', last_index)
print(store_1)
$ python PythonEnumerate.py
0
Index: 0
[0]
0
Index: 1
[0, 0]
0
Index: 2
[0, 0, 0]
0
Index: 3
[0, 0, 0, 0]
6
Index: 4
[0, 0, 0, 0, 6]
5
Index: 5
[0, 0, 0, 0, 6, 5]
4
Index: 6
[0, 0, 0, 0, 6, 5, 4]
2
Index: 7
[0, 0, 0, 0, 6, 5, 4, 2]