Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从元组列表中求元组索引n处的所有值的总和?_Python_List_For Loop - Fatal编程技术网

Python 如何从元组列表中求元组索引n处的所有值的总和?

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

在下面的代码中,我想在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中使用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]