【发布时间】:2018-04-09 08:26:53
【问题描述】:
我有一个包含数百万个数字的列表,这些数字总是增加到最后,我需要在指定范围内查找并返回数字,例如大于 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)
熊猫系列会更实用吗?使用查询()?使用数组而不是 python 对象的 python 列表来解决这个问题的最佳方法是什么
【问题讨论】:
-
您是否尝试将列表过滤为一组值之间的数字?
-
不,抱歉,返回 x 和 y 之间的值
-
您似乎只是想从
950000到950004中提取一个切片。有什么意义? -
也许,用二分法搜索范围边界的索引会更快。
-
您能否更新您的示例以更接近您的实际问题?
标签: python arrays list pandas numpy