我真的不知道怎么问这个。我有一个最初设置为零的3个值的列表。然后我从用户那里一次读取3个值,我想用我读过的新值更新列表中的3个值。
cordlist = [0]*3
输入: 3 4 5
我希望列表现在看起来像: [3,4,5]
输入: 2 3 -6
列表现在应该是 [5,7,-1]
我该如何完成此操作?这就是我所拥有的:
cordlist += ([int(g) for g in raw_input().split()] for i in xrange(n))
但这只是添加了一个新列表,并没有真正更新上一个列表中的值
答案 0 :(得分:2)
In [17]: import numpy as np
In [18]: lst=np.array([0]*3)
In [19]: lst+=np.array([int(g) for g in raw_input().split()])
3 4 5
In [20]: lst
Out[20]: array([3, 4, 5])
In [21]: lst+=np.array([int(g) for g in raw_input().split()])
2 3 -6
In [22]: lst
Out[22]: array([ 5, 7, -1])
答案 1 :(得分:1)
我会做这样的事情:
cordlist = [0, 0, 0]
for i in xrange(n):
cordlist = map(sum, zip(cordlist, map(int, raw_input().split())))
故障:
答案 2 :(得分:1)
cordlist = [v1+int(v2) for v1, v2 in zip(cordlist, raw_input().split())]
像那样测试:
l1 = [1,2,3]
l2 = [2,3,4]
print [v1+v2 for v1, v2 in zip(l1, l2)]
结果:[3,5,7]
答案 3 :(得分:0)
我会那样使用itertools.zip_longest
:
from itertools import zip_longest
def add_lists(l1, l2):
return [int(i)+int(j) for i, j in zip_longest(l1, l2, fillvalue=0)]
result = []
while True:
l = input().split()
print('result = ', add_lists(result, l))
输出:
>>> 1 2 3
result = [1, 2, 3]
>>> 3 4 5
result = [4, 6, 8]
答案 4 :(得分:0)
@ namit numpy解决方案的更紧凑版本
>>> import numpy as np
>>> lst = np.zeros(3, dtype=int)
>>> for i in range(2):
lst += np.fromstring(raw_input(), dtype=int, sep=' ')
3 4 5
2 3 -6
>>> lst
array([ 5, 7, -1])