2017-06-01 72 views
2

为什么这项工作打破了循环:加入功能方面与蟒蛇

"".join(str(i) for i in range(10)) 

,这不?

for i in range(10): 
...  "".join(str(i)) 

我想第二个输出相同的1-9位数字符串。 我是python的新手。

+0

你需要一个迭代来加入它..只需在第二种情况下打印没有空格或换行符的数字来获得输出。不需要'加入' –

回答

1

str.join需要一个迭代,你在这两种情况下提供。

在第一种情况下,生成器理解将数字提供给相同的join函数,并获得预期的结果。

在第二种情况下,在一个数位作为字符串的字符join迭代,并重建它相同(所以join是无用这里):

"".join(str(i))相同`STR(ⅰ)

而且由于你打算打印这些表达式,你最终会在每个数字之间添加一个换行符。在你的循环,你将需要print(i,end="")(蟒蛇3)

作为一个侧面说明

"".join([str(i) for i in range(10)]) 

稍微不仅仅是

"".join(str(i) for i in range(10)) 

因为join需要更高性能反正建立一个列表来分配目标字符串。直接传递列表可以加快进程速度。

+0

你是说在第二种情况下,我固有地在数字的每个字符之间插入一个换行符? 谢谢你的一面,虽然。正如我所说,我是Python新手 –