18

何かでマップを実行する方法があるかどうか疑問に思っていました。マップが機能する方法は、イテラブルを取り、そのイテラブル内の各項目に関数を適用してリストを生成することです。反復可能なオブジェクト自体をマップに変更させる方法はありますか?

4

4 に答える 4

13

リストをその場で変更する必要がある場合は、スライスの割り当てで問題ないことがよくあります

mylist[:] = map(func, mylist)
于 2010-11-10T20:23:22.603 に答える
4

書くのは簡単です:

def inmap(f, x):
    for i, v in enumerate(x):
            x[i] = f(v)

a = range(10)
inmap(lambda x: x**2, a)
print a
于 2010-06-08T19:22:39.370 に答える
1

ラムダ (または定義) またはより良いリスト内包表記 (十分な場合) を使用できます。

[ do_things_on_iterable for item in iterable ]

とにかく、物事が複雑になりすぎる場合は、 for ループでより明示的にしたい場合があります。

たとえば、次のようなことを行うことができますが、それは醜いです:

[ mylist.__setitem__(i,thing) for i,thing in enumerate(mylist) ]
于 2010-06-08T19:14:48.933 に答える
1

それを行うための明白なコードを書くだけです。

for i, item in enumerate(sequence):
    sequence[i] = f(item)
于 2010-06-08T19:21:24.850 に答える