这里有一个简单的问题,但我无法找到明确的答案。我正在编写一些python代码,我对这一行的确切含义感到困惑:
a = []
for x in sys.stdin:
c = x.split()
a.extend(c)
当我运行它时,它默认制作一个单词列表,但为什么呢?为什么python默认为单词而不是行,甚至是stdin中的字符?我知道readlines和readline方法,但我对这段代码与stdin的确切内容感到困惑。
答案 0 :(得分:6)
文件对象(包括sys.stdin
)是可迭代的。循环遍历文件对象会产生行,因此该文件中的文本一直到下一行分隔符。
它永远不会产生文字。您的代码会生成单词,因为您明确地分割了每一行:
c = x.split()
str.split()
没有参数拆分任意长度的空格序列(从开头和结尾删除任何空格),有效地为您提供一个单词列表,然后将其添加到{ {1}}列出a
。