Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.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内置的求和函数_Python - Fatal编程技术网

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本身不能存在

对于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本身不能存在。必须说它是什么的一个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])