0

ループで関数を実行して、すべての結果が直接リストに入る方法と、リスト内のすべての値に作用する関数を実行する方法はありますか?

4

3 に答える 3

7

そのようなループで関数を実行するにはいくつかの方法があります-リスト内包表記を使用できます

test = list('asdf')
[function(x) for x in test]

その結果を使用する

または、マップ機能を使用できます

test = list('asdf')
map(function, test)

最初の答えはより「pythonic」ですが、2番目の答えはより機能的です。

map編集: 2 番目の方法も、関数を呼び出すために任意のコードを実行するのではなく、C で実装されているを使用して関数を直接呼び出すため、はるかに高速です。

于 2008-11-03T16:55:55.477 に答える
1

あなたの質問には明確化が必要です。

ループで関数を実行する

new_list= [yourfunction(item) for item in a_sequence]

リスト内のすべての値に作用する関数を実行する

関数は、シーケンスのすべての項目を処理するために、次のような形式の反復をコードに含める必要があります。

def yourfunction(sequence):
    for item in sequence:
        …

次に、シーケンス(つまり、リスト、文字列、イテレータなど)でそれを呼び出します

yourfunction(range(10))
yourfunction("a string")

YMMV。

于 2008-11-03T16:54:38.100 に答える
0

この例は、その方法を示しています (インタープリターで実行します)。

>>> def square(x):
...  return x*x
...
>>> a = [1,2,3,4,5,6,7,8,9]

>>> map(square,a)
[1, 4, 9, 16, 25, 36, 49, 64, 81]
于 2008-11-03T16:54:04.920 に答える