【问题标题】:Why can't I do a loop in sys.stdin two times in a row ? (Python)为什么我不能连续两次在 sys.stdin 中循环? (Python)
【发布时间】:2016-03-29 15:37:56
【问题描述】:

首先我需要获取行数,所以我这样做了:

for line in sys.stdin:
    c = c + 1
print("Number of lines:" + str(c))
A = [[] for x in range(0,c)]
print(A)

但是我需要再次输入for line in sys.stdin:,因为我需要读取输入。

它不起作用,第二次几乎就像输入一样被消耗,现在是空的。

【问题讨论】:

  • 就是这样:输入被消耗,现在是空的。为什么首先需要行数?

标签: python python-3.x stdin sys


【解决方案1】:

将标准输入输入保存在一个变量中:

lines = sys.stdin.readlines()

现在您可以随意循环lines 变量。

如果您只是计算行数,则根本不需要循环;你可以直接说c = len(lines)

【讨论】:

    【解决方案2】:

    如果您想多次访问它,您必须保存输入。第一个for 循环消耗流,这是不可搜索的。

    lines = sys.stdin.readlines()
    

    如果您正在处理每一行,您可能更喜欢以下内容:

    results = [foo(i) for i in sys.stdin]
    print("Have {} results".format(len(results))
    

    你也可以使用enumerate来记数:

    for cnt, line in enumerate(sys.stdin, start=1):
        foo(line)
    
    print('Saw {} lines'.format(cnt))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-24
      • 2018-05-18
      • 1970-01-01
      相关资源
      最近更新 更多