2011-07-11 71 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