我有一个数值列表,其中包含数百万个数字,这些数字总是逐渐增加到末尾。我需要查找并返回指定范围内的数字,例如大于X但小于Y的数字。列表中的数字可能会发生变化,我要搜索的值也会随之改变。
我一直在使用以下方法,请注意,这只是一个基本示例,数字不是均匀或与程序中显示的相同。
我一直在使用以下方法,请注意,这只是一个基本示例,数字不是均匀或与程序中显示的相同。
l = [i for i in range(2000000)]
nums = []
for element in l:
if element > 950004:
break
if element > 950000:
nums.append(element)
#[950001, 950002, 950003, 950004]
虽然速度很快,但由于我的程序所做的事情需要更快一些,因为数字变化很大,所以我想知道是否有更好的方法可以使用pandas系列或numpy数组来完成?但到目前为止,我只是用numpy做了一个例子:
a = numpy.array(l,dtype=numpy.int64)
使用Pandas序列更有效吗?利用query()函数可以实现什么功能?如果使用数组而不是Python对象的列表,最佳方法是什么?
bisect
包被建议在评论中使用。据我所知,这个包几乎可以解决你的问题。 - Unatiel