查看以下数字列表:
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]
有人可以回答我的问题吗? 预先谢谢你!
答案 0 :(得分:1)
indices_greater_than_5 = [idx for idx,value in enumerate(my_values) if value > 5]
是使用简单列表理解即可实现的一种方法,该列表理解使用enumerate
从0..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])