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)

我想知道是否有比使用 lambda 表达式更好的方法来编写 map 调用所需的函数。我正在尝试学习operatorfunctools来扩展我的 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

您在这里不需要 lambda 函数:

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