python中的Sum() 我一直试图在Python中使用SUM(),我理解了SUM的基本功能,但作为Mathematica的背景,我只是想知道,我们能像Python一样使用和吗?例如,我们在Mathematica中考虑这个Mathematica模块: Sq[a_, b_] := Module[{m, n}, m = Max[a, b]; n = Min[a, b];Sum[(m - r + 1) (n - r + 1), {r, 1, n}]]
现在,有可能写出这样的求和部分吗?我的意思是:python中的Sum() 我一直试图在Python中使用SUM(),我理解了SUM的基本功能,但作为Mathematica的背景,我只是想知道,我们能像Python一样使用和吗?例如,我们在Mathematica中考虑这个Mathematica模块: Sq[a_, b_] := Module[{m, n}, m = Max[a, b]; n = Min[a, b];Sum[(m - r + 1) (n - r + 1), {r, 1, n}]],python,sum,Python,Sum,现在,有可能写出这样的求和部分吗?我的意思是: Sum[(m - r + 1) (n - r + 1), {r, 1, n}] 为了在python中隐藏这一点,我想到了如下内容: sum((m - r + 1) (n - r + 1) in xrange(1,n+1)) 但似乎不起作用!那么我的问题是如何让它工作 sum((m - r + 1) * (n - r + 1) for r in xrange(1,n+1)) 整数之间没有隐式乘法,因此需要* xes中x的f(x)是列表理解的一
Sum[(m - r + 1) (n - r + 1), {r, 1, n}]
为了在python中隐藏这一点,我想到了如下内容:
sum((m - r + 1) (n - r + 1) in xrange(1,n+1))
但似乎不起作用!那么我的问题是如何让它工作
sum((m - r + 1) * (n - r + 1) for r in xrange(1,n+1))
*
f(x)是列表理解的一般格式,您希望x
遍历xes
的每个元素,并返回值f(x)
我只是碰巧发现,
sum((m-r+1)*(n-r+1)对于范围(1,n+1)中的r也能起作用。
两者之间的区别是,在Python2.x中,range
返回一个实际的列表,如果列表很大,可能会浪费大量内存xrange
是一个iterable,它按顺序生成数字,而不是实际返回实际列表。(在Python3中,xrange
消失了,range
变成了一个内存高效的iterable)