相关疑难解决方法(0)

生成器表达式与列表理解

什么时候应该使用生成器表达式?什么时候应该在Python中使用列表推导?

# Generator expression
(x*2 for x in range(256))

# List comprehension
[x*2 for x in range(256)]
Run Code Online (Sandbox Code Playgroud)

python list-comprehension generator

390
推荐指数
7
解决办法
13万
查看次数

Python:为什么列表理解比for循环慢

基本上这些是相同的功能 - 除了列表理解使用,sum而不是x=0; x+=因为后者不受支持.为什么列表理解编译成40%的速度?

#list comprehension
def movingAverage(samples, n=3): 
    return [float(sum(samples[i-j] for j in range(n)))/n for i in range(n-1, len(samples))]

#regular
def moving_average(samples, n=3):
    l =[]
    for i in range(n-1, len(samples)):
        x= 0
        for j in range(n): 
            x+= samples[i-j]
        l.append((float(x)/n))
    return l
Run Code Online (Sandbox Code Playgroud)

对于样本输入的计时,我使用了变体 [i*random.random() for i in range(x)]

python performance list-comprehension

6
推荐指数
1
解决办法
2232
查看次数