我是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)
答案 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)