我有一个列表,我想在其中搜索 500-535 之间的值,并且我想返回在该范围内找到的第一个值的索引。
mylist =[321, 344, 999, 512, 675, 555, 500]
rainday=forecastlist.index(range(500,531))
if not rainday:
print("Empty")
显然这是行不通的。我希望它返回 3。此时我不想要其他值的位置,只是第一个。
您可以简单地构建一个生成器:
generator = (i for i,x in enumerate(mylist) if x in range(500,531))
然后可以使用以下命令调用它:
first_index = next(generator)
如果没有这样的元素,它将引发StopIteration
错误。这个解决方案的好处是你可以next(..)
再次调用等来获取所有索引:
>>> generator = (i for i,x in enumerate(mylist) if x in range(500,531))
>>> next(generator)
3
>>> next(generator)
6
>>> next(generator)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
在你的情况下,你可以这样写:
generator = (i for i,x in enumerate(mylist) if x in range(500,531))
first_index = next(generator)
try:
rainday=next(generator)
except StopIteration:
print("Empty")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句