如何将列表中的每个元素乘以一个数字?

您所在的位置:网站首页 python数组中一个元素乘二 如何将列表中的每个元素乘以一个数字?

如何将列表中的每个元素乘以一个数字?

2024-06-23 17:58| 来源: 网络整理| 查看: 265

一种速度快得多的方法是以向量化的方式进行乘法,而不是遍历列表。Numpy已经提供了一种非常简单方便的方法,你可以使用它。

代码语言:javascript复制>>> import numpy as np >>> >>> my_list = np.array([1, 2, 3, 4, 5]) >>> >>> my_list * 5 array([ 5, 10, 15, 20, 25])

请注意,这不适用于Python的本机列表。如果你将一个数字与一个列表相乘,它会重复该数字的大小。

代码语言:javascript复制In [15]: my_list *= 1000 In [16]: len(my_list) Out[16]: 5000

如果您想要一种纯粹的基于Python的方法,那么使用列表理解基本上是最具Python风格的方法。

代码语言:javascript复制In [6]: my_list = [1, 2, 3, 4, 5] In [7]: [5 * i for i in my_list] Out[7]: [5, 10, 15, 20, 25]

除了列表理解之外,作为纯函数方法,您还可以使用内置的map()函数,如下所示:

代码语言:javascript复制In [10]: list(map((5).__mul__, my_list)) Out[10]: [5, 10, 15, 20, 25]

这段代码将my_list中的所有项传递给5的__mul__方法,并返回一个类似迭代器的对象(在Python-3.x中)。然后,您可以使用list()内置函数将迭代器转换为列表(在Python-2.x中,您不需要这样做,因为map默认情况下返回一个列表)。

基准:

代码语言:javascript复制In [18]: %timeit [5 * i for i in my_list] 463 ns ± 10.6 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) In [19]: %timeit list(map((5).__mul__, my_list)) 784 ns ± 10.7 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) In [20]: %timeit [5 * i for i in my_list * 100000] 20.8 ms ± 115 µs per loop (mean ± std. dev. of 7 runs, 10 loops each) In [21]: %timeit list(map((5).__mul__, my_list * 100000)) 30.6 ms ± 169 µs per loop (mean ± std. dev. of 7 runs, 10 loops each) In [24]: arr = np.array(my_list * 100000) In [25]: %timeit arr * 5 899 µs ± 4.98 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3