2011-07-11 7 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をインストールすると便利でしょう。次に、配列の要素ごとに通常の算術演算を使用することができ、配列を使った計算には多くの便利な関数があります。次のようにmapコマンドを使用することができます別の方法として

>>> 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'は2つの異なるデータ型です(私はこれが明示的にpython 3.xの場合になったと思います)単に 'list()'関数を使います。したがって、上記の例は 'list(map(lambda x:3 * x、[111、222、333])' – Ronikos

関連する問題