Python 如何从元组列表中求元组索引n处的所有值的总和?
在下面的代码中,我想在for循环中添加list=[0,3,2,6,1,10]的第二个参数。第一次迭代应为3+6=9,第二次迭代应添加上一次迭代的输出,即9到10-->9+10=19,我希望最终输出S=[9,19]。我不知道怎么做,我应该在代码中添加另一个循环吗Python 如何从元组列表中求元组索引n处的所有值的总和?,python,list,for-loop,Python,List,For Loop,在下面的代码中,我想在for循环中添加list=[0,3,2,6,1,10]的第二个参数。第一次迭代应为3+6=9,第二次迭代应添加上一次迭代的输出,即9到10-->9+10=19,我希望最终输出S=[9,19]。我不知道怎么做,我应该在代码中添加另一个循环吗 T=[(0,3),(2,6),(1,10)] S=[] for i in range(len(T)): b=T[0][i]+T[0][i+1] S.append(b) 使用zip组合元组中具有相同索引的值。 在a中使用p
T=[(0,3),(2,6),(1,10)]
S=[]
for i in range(len(T)):
b=T[0][i]+T[0][i+1]
S.append(b)
使用zip组合元组中具有相同索引的值。
在a中使用python 3.8中的一个,对T的第二个元组T[1]中的值求和。
T=[0,3,2,6,1,10]
T=listzip*T
普林特
[out]:
[0, 2, 1, 3, 6, 10]
使用赋值表达式求和T[1]
总计=T[1][0]3
S=[total:=T[1][1:]
印刷品
[out]:
[9, 19]
使用zip组合元组中具有相同索引的值。
在a中使用python 3.8中的一个,对T的第二个元组T[1]中的值求和。
T=[0,3,2,6,1,10]
T=listzip*T
普林特
[out]:
[0, 2, 1, 3, 6, 10]
使用赋值表达式求和T[1]
总计=T[1][0]3
S=[total:=T[1][1:]
印刷品
[out]:
[9, 19]
这将有助于你:
T=[(0,3),(2,6),(1,10)]
lst = [T[i][1] for i in range(len(T))]
final_lst = []
for x in range(2,len(lst)+1):
final_lst.append(sum(lst[:x]))
print(final_lst)
输出:
[9, 19]
[9, 19]
如果您更喜欢列表理解,则使用此行而不是最后一个for循环:
输出:
[9, 19]
[9, 19]
这将有助于你:
T=[(0,3),(2,6),(1,10)]
lst = [T[i][1] for i in range(len(T))]
final_lst = []
for x in range(2,len(lst)+1):
final_lst.append(sum(lst[:x]))
print(final_lst)
输出:
[9, 19]
[9, 19]
如果您更喜欢列表理解,则使用此行而不是最后一个for循环:
输出:
[9, 19]
[9, 19]
使用
输出
[9, 19]
使用
输出
[9, 19]
只需修改您的代码如下
T=[(0,3),(2,6),(1,10)]
S=[]
b = T[0][1]
for i in range(1,len(T)):
b+=T[i][1]
S.append(b)
只需修改您的代码如下
T=[(0,3),(2,6),(1,10)]
S=[]
b = T[0][1]
for i in range(1,len(T)):
b+=T[i][1]
S.append(b)
下面是一个使用本机递归的解决方案
import operator
mylist =[(0,3),(2,6),(1,10)]
def accumulate(L, i, op):
def iter(result, rest, out):
if rest == []:
return out
else:
r = op(result, rest[0][i-1])
return iter(r, rest[1:], out + [r])
return iter(L[0][i-1], L[1:], [])
print(accumulate(mylist, 2, operator.add))
print(accumulate(mylist, 1, operator.add))
print(accumulate(mylist, 2, operator.mul))
# ==>
# [9, 19]
# [2, 3]
# [18, 180]
下面是一个使用本机递归的解决方案
import operator
mylist =[(0,3),(2,6),(1,10)]
def accumulate(L, i, op):
def iter(result, rest, out):
if rest == []:
return out
else:
r = op(result, rest[0][i-1])
return iter(r, rest[1:], out + [r])
return iter(L[0][i-1], L[1:], [])
print(accumulate(mylist, 2, operator.add))
print(accumulate(mylist, 1, operator.add))
print(accumulate(mylist, 2, operator.mul))
# ==>
# [9, 19]
# [2, 3]
# [18, 180]