我该如何把[111, 222, 333]
这个数字列表中的每个数都乘以3,得到[333, 666, 999]
呢?
[3*x for x in [111, 222, 333]]
>>> import numpy
>>> a = numpy.array([111,222,333])
>>> a * 3
array([333, 666, 999])
>>> a + 7
array([118, 229, 340])
>>> numpy.dot(a, a)
172494
>>> numpy.mean(a), numpy.std(a)
(222.0, 90.631120482977593)
作为替代方案,您可以使用以下命令中的地图命令:
map(lambda x: 3*x, [111, 222, 333])
如果您需要对序列应用更复杂的函数,这将非常方便。
map
和list
是两种不同的数据类型(我认为在Python 3.x中这变得更加明确),将一个map
转换为一个list
,只需使用list()
函数。因此上面的示例将变为list(map(lambda x: 3 * x,[111,222,333]))
。 - Ronikos这里有一组方便的函数,可对列表执行几个基本操作。它使用了listfun模块中的'Listoper'类,可以通过pip安装。 适用于您情况的函数是: “listscale(a,b):如果“a”是标量,则返回标量“a”与列表“b”的乘积列表,否则反之。” 代码:
!pip install listfun
from listfun import Listoper as lst
x=lst.listscale(3,[111,222,333])
print(x)
输出:
[333, 666, 999]
当然,如果只是一次性操作,你可以像其他人建议的那样使用列表推导式,但如果你需要执行多个列表操作,那么listfun可能会有所帮助。
希望这可以帮到你
链接到PypI: https://pypi.org/project/listfun/1.0/ 文档和示例代码可以在Readme文件中找到:https://github.com/kgraghav/Listfun
使用地图的另一种替代方法:
def multiply(a):
return a * 3
s = list(map(multiply,[111,222,333]))