为什么我不能连续两次在 sys.stdin 中循环? (Python)
Why can't I do a loop in sys.stdin two times in a row ? (Python)
首先我需要获取行数,所以我这样做了:
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:
因为我需要读取输入。
它不起作用,第二次它几乎是因为输入被消耗,现在是空的。
将标准输入保存在变量中:
lines = sys.stdin.readlines()
现在您可以根据需要多次循环 lines
变量。
如果您只是计算行数,则根本不需要循环;你可以直接说 c = len(lines)
.
如果您想多次访问输入,您必须保存输入。第一个 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))
首先我需要获取行数,所以我这样做了:
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:
因为我需要读取输入。
它不起作用,第二次它几乎是因为输入被消耗,现在是空的。
将标准输入保存在变量中:
lines = sys.stdin.readlines()
现在您可以根据需要多次循环 lines
变量。
如果您只是计算行数,则根本不需要循环;你可以直接说 c = len(lines)
.
如果您想多次访问输入,您必须保存输入。第一个 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))