为什么索引给出的输出完全错误?

时间:2018-07-14 10:07:41

标签: python python-3.x list indexing

通常,我使用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>

为什么会这样?我该如何解决这个问题?

2 个答案:

答案 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]