Python内置的求和函数
对于python,我有一个简单的问题:Python内置的求和函数,python,Python,对于python,我有一个简单的问题: 假设我有A=[1,2,3,4],我想对第二个和第三个条目中的元素求和。如何在python中实现这一点sum(A[i]表示[1:2])=2+3=6不起作用 这是无效语法,您可以使用: sum(A[i] for i in [1,2]) 或: 或使用切片: sum(i for i in A[1:3]) 不包括切片中的最后一个索引 sum(A[1:3]) (或者像下面的评论所说,更简单的是:sum(a[1:3])) 您的代码无效的原因是slice本身不能存在
假设我有
A=[1,2,3,4]
,我想对第二个和第三个条目中的元素求和。如何在python中实现这一点sum(A[i]表示[1:2])=2+3=6
不起作用 这是无效语法,您可以使用:
sum(A[i] for i in [1,2])
或:
或使用切片:
sum(i for i in A[1:3])
不包括切片中的最后一个索引
sum(A[1:3])
(或者像下面的评论所说,更简单的是:sum(a[1:3]))
您的代码无效的原因是slice本身不能存在。必须说它是什么的一个slice,例如a[1:3]是a的一个slice,但[1:3]没有说明它应该包含什么元素。第二个问题是索引,正如我提到的,最后一个不包括在内。这是无效语法,您可以使用:
sum(A[i] for i in [1,2])
sum(A[1:3])
或:
或使用切片:
sum(i for i in A[1:3])
不包括切片中的最后一个索引
sum(A[1:3])
(或者像下面的评论所说,更简单的是:sum(a[1:3]))
您的代码无效的原因是slice不能单独存在。必须说它是什么的一部分,例如a[1:3]是a的一部分,但[1:3]没有说明它应该包含什么元素。第二个问题是索引,正如我提到的,最后一个问题不包括在内
sum(A[1:3])
[1:3]表示从索引1到3对列表进行切片[3被排除]
了解列表切片
致以最良好的祝愿
[1:3]表示从索引1到3对列表进行切片[3被排除]
了解列表切片
最好的祝愿!您可以尝试以下方式:
sum([A[item] for item in [1,3] ])
我认为没有更简单的解决方法。您可以尝试以下方法:
sum([A[item] for item in [1,3] ])
我认为没有更简单的解决方案。您的代码不起作用,因为
[1:2]
本身不是Python中的合法表达式
[1:2]
^
SyntaxError: invalid syntax
修复
会有用的
更好的解决方案
请阅读中的列表切片,您的代码不起作用,因为
[1:2]
本身在Python中不是一个合法的表达式:
[1:2]
^
SyntaxError: invalid syntax
修复
会有用的
更好的解决方案
阅读中的列表切片如果您希望列表中的项目范围连续,请使用切片:
sum(A[1:4]) # A[1] + A[2] + A[3]
如果索引集不连续,请使用列表
indices=[1,5,7]
sum(A[i] for i in indices)
或运算符。itemgetter
:
from operator import itemgetter as ig
indices=[1,5,7]
sum(ig(*indices)(A))
--
列表
类型不能接受元组作为索引,将a[1,5,7]
视为[a[1]、a[5]、a[7]
而不是类型错误,这也许是一个遗憾。如果您希望列表中的项目范围连续,请使用切片:
sum(A[1:4]) # A[1] + A[2] + A[3]
如果索引集不连续,请使用列表
indices=[1,5,7]
sum(A[i] for i in indices)
或运算符。itemgetter
:
from operator import itemgetter as ig
indices=[1,5,7]
sum(ig(*indices)(A))
--
列表
类型不能接受元组作为索引,将a[1,5,7]
视为[a[1]、a[5]、a[7]
而不是类型错误,这也许是一个遗憾。a[1]+a[2]
可以很好地工作。此外,2+3
总计为5
,而不是你问题中的6
。a[1:2]只有一个元素,a[1]。sum(a[1:3])
?下一个是包含的,上一个是独占的。@ukaszRogalski你为什么不把它写下来作为答案?a[1]+a[2]
就可以了。另外,2+3
和5
和6
,就像你的问题一样。a[1:2]只有一个元素,a[1].sum(A[1:3])
?下一部分是包含的,上一部分是排他性的。@ukaszRogalski你为什么不把它作为答案来写呢?遗憾的是,没有评论的否决票没有任何意义。你不需要对简单的:sum(A[1:3])进行列表理解如果您需要对列表项的任意子集求和,这是正确的答案;问题不清楚是这样,还是需要子列表(在这种情况下,切片要简单得多)。我假设要添加的项目并不总是连续的。遗憾的是,没有评论的否决票没有任何作用。你不需要对列表进行理解。简单的:sum(a[1:3])如果你需要对列表项目的任意子集求和,这是正确的答案;问题不清楚是否是这样,或者是否需要子列表(在这种情况下,切片要简单得多)。我假设要添加的项并不总是连续的。更简单的是:sum(A[1:3])更简单的是:sum(A[1:3])