如何从标准输入一次读取 "n" 行?
How to read "n" lines at a time from stdin?
考虑标准输入有以下条目:
2
a
b
3
d
e
f
现在我想先使用 n= sys.stdin.readline()
读取数字
然后使用函数 ReadNLines(n)
将接下来的 n
行读取到列表中。
所以预期的输出是:
List1 = ['a','b']
List2 = ['d','e','f']
这是我试过的。我正在寻找更好的计时性能。
import sys
def ReadNLines(n):
List =[]
for line in range(n):
List.append(sys.stdin.readline())
return List
if __name__ == "__main__":
n = sys.stdin.readline()
List1 = ReadNLines(n)
n = sys.stdin.readline()
List2 = ReadNLines(n)
您需要删除 sys.stdin.readline()
结果中包含的换行符。你需要将 n
转换为整数。
import sys
def ReadNLines(n):
List =[]
for _ in range(n):
List.append(sys.stdin.readline().strip())
if __name__ == "__main__":
n = int(sys.stdin.readline().strip())
ReadNLines(n)
n = int(sys.stdin.readline().strip())
ReadNLines(n)
因为您从不使用 line
变量,所以约定是使用 _
作为虚拟变量。您还可以将函数转换为列表理解:
def readNLines(n):
return [sys.stdin.readline().strip() for _ in range(n)]
我认为这符合您的要求:
import sys
def read_n_lines(n):
return [sys.stdin.readline().rstrip() for _ in range(n)]
if __name__ == "__main__":
count = 0
while True:
n = sys.stdin.readline().rstrip()
if not n: # Blank line entered?
break # Quit.
n = int(n)
result = read_n_lines(n)
count += 1
print(f'List{count} = {result}')
print('done')
示例 运行 — Enter 键被按下以结束每行输入:
2
a
b
List1 = ['a', 'b']
3
d
e
f
List2 = ['d', 'e', 'f']
done
考虑标准输入有以下条目:
2
a
b
3
d
e
f
现在我想先使用 n= sys.stdin.readline()
读取数字
然后使用函数 ReadNLines(n)
将接下来的 n
行读取到列表中。
所以预期的输出是:
List1 = ['a','b']
List2 = ['d','e','f']
这是我试过的。我正在寻找更好的计时性能。
import sys
def ReadNLines(n):
List =[]
for line in range(n):
List.append(sys.stdin.readline())
return List
if __name__ == "__main__":
n = sys.stdin.readline()
List1 = ReadNLines(n)
n = sys.stdin.readline()
List2 = ReadNLines(n)
您需要删除 sys.stdin.readline()
结果中包含的换行符。你需要将 n
转换为整数。
import sys
def ReadNLines(n):
List =[]
for _ in range(n):
List.append(sys.stdin.readline().strip())
if __name__ == "__main__":
n = int(sys.stdin.readline().strip())
ReadNLines(n)
n = int(sys.stdin.readline().strip())
ReadNLines(n)
因为您从不使用 line
变量,所以约定是使用 _
作为虚拟变量。您还可以将函数转换为列表理解:
def readNLines(n):
return [sys.stdin.readline().strip() for _ in range(n)]
我认为这符合您的要求:
import sys
def read_n_lines(n):
return [sys.stdin.readline().rstrip() for _ in range(n)]
if __name__ == "__main__":
count = 0
while True:
n = sys.stdin.readline().rstrip()
if not n: # Blank line entered?
break # Quit.
n = int(n)
result = read_n_lines(n)
count += 1
print(f'List{count} = {result}')
print('done')
示例 运行 — Enter 键被按下以结束每行输入:
2
a
b
List1 = ['a', 'b']
3
d
e
f
List2 = ['d', 'e', 'f']
done