如何知道Python列表中所有特定数字的索引号

时间:2018-10-23 20:21:52

标签: python list indexing append

查看以下数字列表:

dlist = [23.0, 28.6, 32.9, 34.9, 34.2, 31.0, 25.9, 20.1, 15.0, 11.8, 11.1, 13.1, 17.4, 23.0, 28.6, 32.9, 34.9, 34.2, 31.0, 25.9, 20.1, 15.0, 11.8, 11.1, 13.1, 17.4]

现在,我尝试查找列表中所有大于25的数字的索引号。然后,我要列出这些索引号的列表。

for i in dlist:
    if i >= 25:
        checklist.append(list_degrees.index(i))

现在的问题是它两次注册了一些索引号。例如:我们看到25以上的第一个数字:28.6。该数字的索引号为1。如果进一步查看,我们将再次看到28.6,它应该具有索引号14。相反,它再次获得了索引号1。

在这里您看到我的“错误”输出:

[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]

有人可以回答我的问题吗? 预先谢谢你!

4 个答案:

答案 0 :(得分:1)

indices_greater_than_5 = [idx for idx,value in enumerate(my_values) if value > 5]

是使用简单列表理解即可实现的一种方法,该列表理解使用enumerate0..len(my_values)-1进行计数

答案 1 :(得分:1)

您可以按照以下示例进行操作:

ord('A') <= ord(char) <= ord('Z')

您的代码无法正常工作的原因是因为dlist = [23.0, 28.6, 32.9, 34.9, 34.2, 31.0, 25.9, 20.1, 15.0, 11.8, 11.1, 13.1, 17.4, 23.0, 28.6, 32.9, 34.9, 34.2, 31.0, 25.9, 20.1, 15.0, 11.8, 11.1, 13.1, 17.4] checklist = [] for idx, val in enumerate(dlist): if val >= 25: checklist.append(idx); print(checklist); 返回了该列表中首次出现的索引,导致该列表后面的值以错误的索引显示,因为他们获得的商品index具有与列表中较早出现的相同的值。

答案 2 :(得分:0)

使用NAME返回该项目在列表(https://docs.python.org/3/tutorial/datastructures.html)中首次出现的索引。这就是为什么您只获得较早出现的索引来收集要使用index

的所有索引的原因

使用enumerate并仅获取值大于enumerate的项目的索引

25

答案 3 :(得分:0)

或者,您可以使用numpy的where函数:

import numpy as np

np.where(np.asarray(dlist) > 25)[0]

# array([ 1,  2,  3,  4,  5,  6, 14, 15, 16, 17, 18, 19])