2016-12-08 88 views
0

簡單的問題在這裏,但我找不到一個明確的答案。我正在寫一些Python代碼,我很困惑,這行不正是:「sys.stdin中的x」是做什麼的?

a = [] 
for x in sys.stdin: 
    c = x.split() 
    a.extend(c) 

當我運行它,它默認爲使單詞的列表,但爲什麼會這樣?爲什麼python默認使用單詞而不是行,甚至默認使用stdin中的字符?我知道readline和readline方法,但我很困惑這個代碼是用stdin做什麼的。

回答

6

文件對象,包括sys.stdin,是可迭代的。在文件對象上循環產生,因此該文件中的文本直到下一行分隔符。

它從不產生單詞。你的代碼產生的話,因爲你明確地分割每行:

c = x.split() 

str.split()不帶參數的分裂上任意長度的空白序列(除去開頭和結尾的任何空白),有效地給你單詞的列表,其中然後被添加到與list.extend()a列表中。

+0

我現在明白了。我有strip()和split()混淆,想知道爲什麼一個方法去除尾隨的空白導致了單詞。感謝你的回答。 –

相關問題