我正在尝试从以下列表中获取大于70的值的索引:
temperatures = [33, 66, 65, 62, 59, 60, 62, 64, 70, 76, 80, 69, 80, 83, 68, 79, 61, 53, 50, 49, 53, 48, 45, 39]
但是当循环找到相等的值时出了点问题:
hour_ex = []
for i in temperatures:
if i > 70:
hour_ex.append(temperatures.index(i))
print(hour_ex)
上面的代码正在打印:
[9, 10, 10, 13, 15]
当循环到达索引12时,因为它具有相同的值,所以它再次打印索引10。我不知道这是怎么回事。我该如何解决?
答案 0 :(得分:2)
False
是一个列表搜索功能,可对列表进行线性遍历以查找给定元素的第一个位置。这就解释了您令人困惑的输出-如果重复项如80,dict
将始终为您找到该元素的第一个索引,即10。
如果您有兴趣获取列表中每个元素的元组索引,请使用True
。
此外,变量list
表示索引,但实际上代表列表中的给定温度;这是一个误导性的变量名。
index
考虑使用列表推导,它对枚举列表执行过滤操作:
index()
答案 1 :(得分:1)
从python docs到list.index(x[, start[, end]])
:
返回值等于x的第一项列表中的从零开始的索引。如果没有此类项目,则会引发ValueError。
要实现您想做的事情,可以执行以下操作:
hour_ex = [i for i, n in enumerate(temperatures) if n > 70]
答案 2 :(得分:0)
您可以在循环中使用范围:
temperatures = [33, 66, 65, 62, 59, 60, 62, 64, 70, 76, 80, 69, 80, 83, 68, 79, 61, 53, 50, 49, 53, 48, 45, 39]
hour_ex = []
for i in range(len(temperatures)):
if temperatures[i] > 70:
hour_ex.append(i)
print(hour_ex)
答案 3 :(得分:0)
rect
因此,如果列表rect
中的值重复,则会返回值的最小索引
您可以尝试
rect.center