Python中.join()方法为何返回带空格的列表格式结果?
为什么
" ".join(str(input))会得到异常结果? 错误原因:
- 执行
str(input)时,是将整个列表转换成了一个完整字符串,原列表[1, 0, 5, 3, 4, 12, 19]会变成:"[1, 0, 5, 3, 4, 12, 19]" - Python的
join()方法会遍历可迭代对象的每一个元素,而字符串本身是可迭代的,所以join()会把这个字符串里的每一个单个字符拿出来,用空格拼接:- 原字符串里的
[、1、,、空格、0都会被拆成独立元素; 12这类多位数会被拆成1和2两个字符,拼接后变成1 2;- 原字符串自带的逗号、空格也会被保留并插入空格,最终出现带括号、多余空格的结果。
- 原字符串里的
正确写法的逻辑:
" ".join(list(map(str, input)))能正常运行的原因:
map(str, input)会遍历列表中的每个元素,单独将每个数字转为对应字符串,得到迭代器('1', '0', '5', '3', '4', '12', '19');- 转成列表后为
["1","0","5","3","4","12","19"]; join()遍历这个列表里的完整字符串元素,用空格拼接,最终得到正常的"1 0 5 3 4 12 19"。
内容的提问来源于stack exchange,提问作者habitant
相关产品推荐
相关产品推荐

