如何在新行之后将输入存储在列表中

时间:2015-06-09 21:36:36

标签: python python-3.x

我是python的新手,我试图在T行中输入2个数字,然后将其存储在列表中并计算列表中每两对数字的总和,但是我的列表只存储最后两个输入的数字。它不会在最后一个新线之前存储任何东西。如何存储所有输入?

from operator import add
t = int(input())
i =  0
while i < t:
    n = input()
    L = list(map(int, n.split()))
    i += 1
sumL = (list(map(add, *[iter(L)]*2)))
print (sumL)

2 个答案:

答案 0 :(得分:4)

在循环外部初始化并追加L = list(map(int, n.split()))每次迭代创建一个新列表,您也可以使用range

L = []
for _ in range(t):
    n = input()
    L.append(list(map(int, n.split())))

或使用列表comp:

L = [list(map(int, input().split())) for _ in range(t)]

你应该知道,如果用户输入任何无法转换为int的内容,将会出现错误,也无法保证用户输入的数据可以分成两个数字,所以理想情况下你会使用{{ 3}}并验证输入。

您也可以list(map(sum,L)

L = [[1,2],[3,4]]

print(list(map(sum,L)))
[3, 7]

答案 1 :(得分:0)

您正在重新定义每个循环交互中的列表。

你需要在循环之外定义列表,并在循环内部附加。

另外,我不确定你要做什么。

t = int(raw_input("T: "))

x_sum = 0
y_sum = 0

for i in range(t):
    n = raw_input("%s: " % (i+1)).strip()
    x, y = n.split(' ')
    x_sum += int(x)
    y_sum += int(y)

print (x_sum, y_sum)

输出

$ python test.ph
T: 2
1: 1 1
2: 2 2
(3, 3)