了解Python地图功能+范围

Pie*_*e B 3 python python-3.x map-function

我试图理解这些代码行之间的区别:

list(''.join(map(lambda x: str(x * 3), range(1, 4))))
Run Code Online (Sandbox Code Playgroud)

出:['3', '6', '9']正如所料.

然而:

list(''.join(map(lambda x: str(x * 5), range(1, 4))))
Run Code Online (Sandbox Code Playgroud)

产出['5', '1', '0', '1', '5'],而我预计:['5','10','15']

以同样的方式

[x for x in map(lambda x: str(x * 5), range(1, 4))]
Run Code Online (Sandbox Code Playgroud)

输出['5','10','15'].

这有什么不对?

Mar*_*ers 10

您首先所有字符串连接成一个大字符串,然后将该字符串转换为列表,这总是导致所有单个字符被拉出作为元素:

>>> list(map(lambda x: str(x * 5), range(1, 4)))
['5', '10', '15']
>>> ''.join(map(lambda x: str(x * 5), range(1, 4)))
'51015'
>>> list(''.join(map(lambda x: str(x * 5), range(1, 4))))
['5', '1', '0', '1', '5']
Run Code Online (Sandbox Code Playgroud)

如您所见,您需要做的就是删除str.join()呼叫,只需list()直接使用map():

list(map(lambda x: str(x * 5), range(1, 4)))
Run Code Online (Sandbox Code Playgroud)