0

タイトルは少し誤解を招きますが、関連性があります。

次のコードを検討してください。

def add_page_to_index(index, url, content):
    words = content.split()
    for word in words:
        add_to_index(index, word, url)

for ループを次のようなものに変更したいと思います。

[add_to_index(index, word, url) for word in words]

上記の行は実際には機能せず、人々を怖がらせる可能性があると確信していますが、私が達成しようとしていることの要点を示していると思います. ここで map() 関数を使用するのが理想的ですが、引数 'index' または 'url' のどちらも変更されず (それらはシーケンスではありません)、'word in words' は、関数のシーケンスを提供します。私の質問は、可能であれば、ここでマップ機能をどのように使用できるかということです。また、上記の(おそらく忌まわしい)コードの行に関して、そのような行を機能させるにはどうすればよいでしょうか...名前に割り当てた場合、それをリスト内包表記にすることができると思いますが、そうではありませんこの状況では本当に理にかなっています。

4

1 に答える 1

3

リスト内包表記は通常、各要素に関数を適用するのではなく、リストを変換するために使用されるため、コードの意図だけが間違っています。

あれは、

def add_page_to_index(index, url, content):
    [add_to_index(index, word, url) for word in content.split()]

あなたが持っているものの有効な再実装ですが、理解の結果が使用されていないため、簡単ではありません。

map 関数の使用方法を学習しようとしている場合は、次のようなものを探している可能性があります。

def add_page_to_index(index, url, content):
    words = content.split()
    map(lambda word: add_to_index(index, word, url), words)

ただし、結果を無視している場合は、元の for ループを使用します。このタスクが必須であり、変革をもたらすものではないことは明らかです。

于 2013-09-20T14:56:44.033 に答える