2011-07-11 67 views
15

我怎么说,拿[111, 222, 333]并乘以3得到[333, 666, 999]在python中做数学计算

+0

你可以使用[list comprehension](http://docs.python.org/howto/functional.html#generator-expressions-and-list-comprehensions)。你可能还会看看[Learn Python the Hard Way](http://learnpythonthehardway.org/book/) – Telemachus

+0

@telemachus我真的不明白,你可以给我关于我的问题中的例子的代码吗? – JShoe

回答

24
[3*x for x in [111, 222, 333]] 
12

如果你打算做大量的数组操作,那么你可能会发现安装Numpy很有用。然后,您可以在数组上使用普通的数学运算元素,并且有很多有用的函数用于数组计算。

>>> 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) 
1

作为替代方案,你可以使用地图命令,如下:

map(lambda x: 3*x, [111, 222, 333]) 

如果你有一个更复杂的功能,以适用于序列非常方便。

+0

这只是返回一个<地图对象...>一些内存指针,你怎么从中获取数据呢? – george

+0

@george这可能不适用了,但如果它帮助其他任何人:'map'和'list'是两种不同的数据类型(我认为这已成为python 3.x中的明显例子)将'map'变成一个'list',只需使用'list()'函数即可。所以上面的例子会变成'list(map(lambda x:3 * x,[111,222,333]))' – Ronikos