Python 3 Map関数が関数を呼び出していない 質問する

Python 3 Map関数が関数を呼び出していない 質問する

次のコードはなぜ何も印刷しないのでしょうか:

#!/usr/bin/python3
class test:
    def do_someting(self,value):
        print(value)
        return value

    def fun1(self):
        map(self.do_someting,range(10))

if __name__=="__main__":
    t = test()
    t.fun1()

私は上記のコードを Python 3 で実行しています。何か非常に基本的なことが抜けていると思うのですが、それがわかりません。

ベストアンサー1

map()イテレータを返す、要求されるまで要素を処理しません。

すべての要素を強制的に処理するには、リストに変換します。

list(map(self.do_someting,range(10)))

または、collections.deque()マップ出力が必要ない場合は、長さを 0 に設定してリストを生成しないようにします。

from collections import deque

deque(map(self.do_someting, range(10)))

ただし、単純にforループを使用する方が、将来コードを保守する人にとってははるかに読みやすくなることに注意してください。

for i in range(10):
    self.do_someting(i)

おすすめ記事