相关疑难解决方法(0)

sum()的功能是什么,但乘法?产品()?

Python的sum()函数返回迭代中的数字总和.

sum([3,4,5]) == 3 + 4 + 5 == 12
Run Code Online (Sandbox Code Playgroud)

我正在寻找返回产品的功能.

somelib.somefunc([3,4,5]) == 3 * 4 * 5 == 60
Run Code Online (Sandbox Code Playgroud)

我很确定这样的功能存在,但我找不到它.

python product built-in pep

181
推荐指数
7
解决办法
11万
查看次数

返回列表的产品

是否有更简洁,高效或简单的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万
查看次数

为什么使用'eval'是一种不好的做法?

我正在使用以下课程轻松存储我的歌曲数据.

class Song:
    """The class to store the details of each song"""
    attsToStore=('Name', 'Artist', 'Album', 'Genre', 'Location')
    def __init__(self):
        for att in self.attsToStore:
            exec 'self.%s=None'%(att.lower()) in locals()
    def setDetail(self, key, val):
        if key in self.attsToStore:
            exec 'self.%s=val'%(key.lower()) in locals()
Run Code Online (Sandbox Code Playgroud)

我觉得这比写出一个if/else块更具可扩展性.但是,eval似乎被认为是一种不良做法并且使用起来不安全.如果是这样,任何人都可以向我解释为什么并告诉我一个更好的方法来定义上面的类?

python eval

125
推荐指数
6
解决办法
3万
查看次数

标签 统计

python ×3

built-in ×1

eval ×1

pep ×1

product ×1