在python列表上执行批量算术运算

时间:2017-08-02 09:33:36

标签: python python-3.x optimization

我有一个整数列表,我希望有效地对列表切片(子数组)的每个元素或某些索引(例如范围(开始,结束,跳转))执行加法,乘法,平面除法等操作。列表切片的每个元素添加或乘以的数字是常量(比如'k')。

例如:

ObjectMapper

我必须在不同的切片/范围上多次执行这些操作,并且常量“k”因不同的切片/范围而变化。显而易见的方法是运行for循环并修改元素的值,但这还不够快。您可以通过使用numpy数组来有效地执行此操作,因为它支持批量分配/修改,但我正在寻找一种在纯python中执行此操作的方法。

1 个答案:

答案 0 :(得分:0)

避免for循环的一种方法如下:

>>> nums = [23, 44, 65, 78, 87, 11, 33, 44, 3]
>>> nums[2:7:2] = [x//2 for x in nums[2:7:2]]
>>> nums
[23, 44, 32, 78, 43, 11, 16, 44, 3]