59

こんにちは、リスト内の整数を掛けたいと思います。

例えば;

l = [1, 2, 3]
l = [1*2, 2*2, 3*2]

出力:

l = [2, 4, 6]

だから私はオンラインで検索していましたが、答えのほとんどは、次のようにすべての整数を互いに乗算することに関するものでした:

[1*2*3]

4

6 に答える 6

99

リスト内包表記を試してください:

l = [x * 2 for x in l]

これは を通過しl、各要素を 2 倍します。

もちろん、それを行う方法は複数あります。ラムダ関数とに興味がある場合はmap、次のこともできます

l = map(lambda x: x * 2, l)

lambda x: x * 2の各要素に関数を適用しますl。これは次と同等です。

def timesTwo(x):
    return x * 2

l = map(timesTwo, l)

リストではなくマップオブジェクトを返すことに注意してくださいmap()。後でリストが本当に必要な場合は、list()後で関数を使用できます。たとえば、次のようになります。

l = list(map(timesTwo, l))

この明確化のためのコメントで Minyc510 に感謝します。

于 2014-10-19T01:31:20.947 に答える
26

The most pythonic way would be to use a list comprehension:

l = [2*x for x in l]

If you need to do this for a large number of integers, use numpy arrays:

l = numpy.array(l, dtype=int)*2

A final alternative is to use map

l = list(map(lambda x:2*x, l))
于 2014-10-19T01:34:02.157 に答える
6

別の機能的アプローチは、固定倍数でfunctools.partial2つのパラメーターを利用するために使用している場合、無名関数よりも見やすいかもしれませんoperator.mul

>>> from functools import partial
>>> from operator import mul
>>> double = partial(mul, 2)
>>> list(map(double, [1, 2, 3]))
[2, 4, 6]
于 2016-05-25T11:51:54.690 に答える
4

numpy を使用:

    In [1]: import numpy as np

    In [2]: nums = np.array([1,2,3])*2

    In [3]: nums.tolist()
    Out[4]: [2, 4, 6]
于 2018-01-19T06:29:30.757 に答える