【发布时间】:2013-12-29 02:14:13
【问题描述】:
我正在尝试找到一种简单的方法,将点 . 作为字符串添加到每个 3 位数字 ('43434' -> '43.434),我发现了一个有趣的 join 用法:
num = '1234567'
new_num = '.'.join(num[i:i+3] for i in range(0, len(num), 3))
# new_num = 123.456.7'
嗯,它接近我想要的。这就是我想要的:
(its need to be `'1.234.567'`)
为什么会这样? 当我在加入时使用切片时,它会为每个项目添加添加:
num = '2333'
>>> '.'.join(num[0:2])
<<< '2.3'
>>> '.'.join(num[0:3])
<<< '2.3.3'
我在某处读到它称为字符串作为可迭代概念。谁能帮我理解一下?
【问题讨论】:
-
num[i:i+3] for i in range(0, len(num), 3)- 这是generator expression。快速的 Google 搜索没有显示任何好的初学者对生成器的介绍,所以我已经链接了 PEP,建议他们介绍该语言。