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)
| 归档时间: |
|
| 查看次数: |
3364 次 |
| 最近记录: |