2017-06-01 71 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新手 –