3

私が実行する一般的な操作は、文字のリストのリストを単語(文字列)のリストに結合することです。

私は通常、リスト内包表記を使用します。

lists_of_letters = [["m", "y"], ["d", "o", "g"], ["s", "k", "i", "p"]]
list_of_words = ["".join(a_list_of_letters) for a_list_of_letters in lists_of_letters]
# list_of_words == ["my", "dog", "skip"]

または、もう少し機能的な場合もあります。

list_of_words = map(lambda x: "".join(x), lists_of_letters)

ラムダ式を使用するよりも、マップ呼び出しに必要な関数を作成するためのより良い方法があるかどうか疑問に思っています。Python関数型プログラミングチョップを拡張するための演算子関数ツールを学習しようとしていますが、この場合、それらを使用する明確な方法を見つけることができないようです。

4

2 に答える 2

5

この場合、実際には次のように言うことができますmap(''.join, lists_of_letters)

In [1]: lists_of_letters = [["m", "y"], ["d", "o", "g"], ["s", "k", "i", "p"]]
In [2]: map(''.join, lists_of_letters)
Out[2]: ['my', 'dog', 'skip']

なぜなら''.join、それ自体が単一の引数を取る関数(空の文字列のバインドされたメソッド)だからです。

In [3]: ''.join
Out[3]: <built-in method join of str object at 0x100258620>

とは言うものの、ここではIMOが少し読みにくいため、それ自体は良くないかもしれません。

于 2012-12-02T07:28:14.113 に答える
1

ここではラムダ関数は必要ありません:

In [26]: map("".join, lists_of_letters)
Out[26]: ['my', 'dog', 'skip']
于 2012-12-02T07:27:36.703 に答える