小编Sim*_*ins的帖子

返回列表的产品

是否有更简洁,高效或简单的pythonic方式来执行以下操作?

def product(list):
    p = 1
    for i in list:
        p *= i
    return p
Run Code Online (Sandbox Code Playgroud)

编辑:

我实际上发现这比使用operator.mul要快一些:

from operator import mul
# from functools import reduce # python3 compatibility

def with_lambda(list):
    reduce(lambda x, y: x * y, list)

def without_lambda(list):
    reduce(mul, list)

def forloop(list):
    r = 1
    for x in list:
        r *= x
    return r

import timeit

a = range(50)
b = range(1,50)#no zero
t = timeit.Timer("with_lambda(a)", "from __main__ import with_lambda,a")
print("with lambda:", t.timeit())
t = timeit.Timer("without_lambda(a)", "from __main__ …
Run Code Online (Sandbox Code Playgroud)

python

150
推荐指数
9
解决办法
16万
查看次数

Python函数在递归后返回None

我无法弄清楚为什么这个python函数返回None,如果它递归调用自己.

这是我解决项目欧拉问题的一部分.无论如何我已经以更好的方式解决了这个问题,但是这仍然让我烦恼,因为函数似乎工作正常 - 它似乎知道我想要返回的变量的值.

def next_prime(previous):
    if previous % 2 == 0:
        candidate = previous + 1
    else:
    candidate = previous + 2
    print "trying", candidate
    prime = True
    for div in range(2,candidate//2,1):
        if candidate % div == 0:
            prime = False
            print candidate, "is not prime - divisible by", div
            next_prime(candidate)
            break
    if prime is True:
        print candidate, "is prime"
        #return candidate

last = 896576
print "After", last, ", the next prime is..."
next_prime(last)
Run Code Online (Sandbox Code Playgroud)

这给出了:

After 896576 , the …
Run Code Online (Sandbox Code Playgroud)

python recursion

3
推荐指数
1
解决办法
1955
查看次数

标签 统计

python ×2

recursion ×1