在python中,怎樣計算list的累積和?不能用loop或者library的function。

時間 2021-06-01 13:28:00

1樓:小小

def sum_list(list_):

if len(list_)==0:

return 0

else:

return list_[0] + sum_list(list_[1:])

2樓:greedisgood

import numpy as np

def cumsum(list):

return np.array(list).cumsum().tolist()

3樓:room song

Julia:

>> L = [1, 2, 3, 2, 2] #表示無序,而不是順序

>> map(x->mapreduce(y->y,+,L[1:x]),collect(1:1:length(L)))

4樓:

L=[1,2,

3,4,

5]t_sum=0

defplus(x

):global

t_sum

t_sum+=x

return

t_sum

print

map(

lambdax:

plus(x

),L)可惜python的+=不是個表示式

5樓:

#!/usr/bin/env python# -*- coding: utf-8 -*-import

timeitL=

range

(100

)[::3]

deftest1

():return

reduce

(lambdal,

e:l+

[l[-

1]+e

],L,[

0])[1:]

deftest2

():return

reduce

(lambdal,

e:l.

(l[-

1]+e

)orl,

L,[0

])[1

:]class

consumor

(object

):def

__init__

(self

,nums

):self

.nums

=nums

self

.length

=len

(nums

)def

__iter__

(self

):self

.cursor=0

self

.lastsum=0

return

self

defnext

(self

):if

self

.cursor

.length

:cur_val

=self

.nums

[self

.cursor

]self

.cursor+=1

self

.lastsum

+=cur_val

return

self

.lastsum

else

:raise

StopIteration

()def

test3

():return

list

(consumor(L

))print

test1

()==

test2

()==

test3

()print

timeit

.timeit

(test1

)print

timeit

.timeit

(test2

)print

timeit

.timeit

(test3

)執行結果

jyf@brix:~/hack/python$ python consum.py

True

9.76863884926

5.53098297119

14.5979530811

6樓:袁侃

nums = [1,2,3,4,5,6]

cumsum_nums =[num+sum(nums[:idx]) for idx, num in enumerate(nums)]

你是這個意思嗎…

7樓:

K(Exception

):pass

def_tc(f

,*xs):

raiseK(

f,xs)

defrun_tc(f

,*xs):

defkeep

():passr=

None

classR:

def__del__

(self

):nonlocalf,

xs,rtry:r

=f(*

xs)exceptKas

k:(f

,xs)=

k.argsR()

R()keep

()return

rdef

foldl(f

,z,xs

,ix=0

):try:x

=xs[ix

]except

:return

zelse

:return

_tc(

foldl,f

,f(z

,x),xs,ix

+1)deftc(

f):deff_(*

xs):

return

run_tc(f

,*xs)

return

f_@tc

defcum_sum(xs

):x,*

xs=xsdeff(

z,x):

z.(z

[-1]

+x)return

zreturn

foldl(f

,[x],

xs)print

('cum_sum -> %s'

%cum_sum([1

,2,3

,4,5

]))# 值得一提的是,這樣寫我們並不會 stack overflow:

def_sum_tail(n

,s=0

):if

n<=0:

return

selse

:return

_tc(

_sum_tail,n

-1,s

+n)sum_tail=tc

(_sum_tail

)print

('sum_tail -> %s'

%sum_tail

(1000000))

8樓:

def f(L):

if Lreturn L

elsereturn [L[0]] + map(lambda x: x + L[0], f(L[1print f([1,2,3,4,5])

9樓:任衛

1eval("+".join([str(i) for i in L]))

列表解析算迴圈不

2reduce(lambda x,y : x+y, L,0)

在科學計算方面,Python已經超過MATLAB了麼?

為什麼一定要分出個誰超越誰,根據具體問題,哪個快用哪個。至少在CFD領域,不可能,開玩笑呢 我覺得插值 求導 優化,常用的演算法兩種有區別嗎?兩者應用側重不同吧。Python在不用numba或cython的情況下,比MATLAB慢太多了。科學計算的將來是Julia。解大規模線性方程組numpy裡面的...

在Python中,parameters與argument有什麼不同?

levi a parameter is a variable which we use in the function definition that is a handle that allows the code in the function to access the arguments f...

怎樣使用 Python 計算多項式的值?

青牛 你好。Numpy提供的多項式函式對多項式係數的陣列進行運算,主要函式包括 np.poly,np.polyadd,np.polydiv,np.polyint,np.polysub,np.poly1d,np.polyder,np.polyfit,np.polymul,np.polyval等 hen...