Pythonのリスト内のすべての数値から値を減算しますか?


84

私はリストを持っています

 a = [49, 51, 53, 56]

リスト内の各整数値から13を引くにはどうすればよいですか?

回答:


146

リスト内包

a = [x - 13 for x in a]

2
def minus13(a):上の行を配置し、1つのレベルをインデントします。
Ignacio Vazquez-Abrams

8
a[:]単にに割り当てるのではなく、なぜlhsでaa[:]リストのコピーを作成しませんか?
istruble 2011


4
何をすべき行うことは、リスト内包からの値が関数によって返されるべきである、と呼び出し側が適切であれば、既存の配列を置換することを決定しなければならないということです。
Ignacio Vazquez-Abrams

1
@istruble:に直接割り当てるだけでも同様に機能します。したがってa = [x - 13 for x in a]、同様に機能し、混乱が少なくなります。
Lennart Regebro 2011

71

数字を頻繁に扱う場合は、NumPyを確認することをお勧めします。数値配列に対して直接、あらゆる種類の操作を実行できます。例えば:

>>> import numpy
>>> array = numpy.array([49, 51, 53, 56])
>>> array - 13
array([36, 38, 40, 43])

1
簡単なテストを行ったところ、元の配列はそのままで新しい配列が返されました。
フランソワ

10

map()関数を使用できます。

a = list(map(lambda x: x - 13, a))

7
@ Frost.baka Python 3では、mapはmapオブジェクトを返します。Python 2では、リストを返します。
sputnikus 2011

5

コメントの質問のためにすでに投稿された解決策を明確にするため

import numpy

array = numpy.array([49, 51, 53, 56])
array = array - 13

出力します:

配列([36、38、40、43])


3

これは機能します:

for i in range(len(a)):
  a[i] -= 13

4
リスト内包表記ソリューションは、はるかにPython的です。あなたはそれらが好きかもしれません。 docs.python.org/tutorial/...
istruble

誰が私のコメントを削除しましたか?-aの長さを数える意味がわかりません。簡単な計算をするため。
jaycodez 2011

2
アルゴリズムをこのように表現する場合は、インデックス変数(i)がすべての可能なインデックス値を反復処理するためにカウントが必要です。このインデックス変数は、リスト内の各要素を変更するために必要です。
サンタ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.