在列表中添加数字。蟒蛇

时间:2013-09-30 13:17:09

标签: python

如何创建一个添加给定列表中所有数字的函数?在Python中。 像这样:

list = [8, 5, 6, 7, 5, 7]

def sum(list):
    ???

2 个答案:

答案 0 :(得分:3)

严格回答您的要求:

# notice how I've named it 'lst' not 'list'—'list' is the built in; don't override that
def sum(lst):  
    ret = 0
    for item in lst;
        ret += item
    return ret

或者,如果您喜欢函数式编程:

def sum(lst):
    return reduce(lambda acc, i: acc + i, lst, 0)

甚至:

import operator

def sum(lst):
    return reduce(operator.add, lst, 0)

你甚至可以让它适用于非数字输入,内置sum()无法做到(因为它是作为高效的C代码实现的),但这实际上属于过度工程的范畴: / p>

def sum(lst, initial=None):
    if initial is None:
        initial = type(lst[0])() if lst else None
    return reduce(lambda acc, i: acc + i, lst, initial)

>>> sum([1, 2, 3])
6
>>> sum(['hello', 'world'])
'hello world'
>>> sum([[1, 2, 3], [4, 5, 6]])
[1, 2, 3, 4, 5, 6]

但由于Python列表是无类型的,如果是空列表,此函数将返回None

注意:但正如其他人所指出的那样,这仅用于学习目的;在现实生活中,您使用内置的sum()函数。

答案 1 :(得分:0)

它已经存在,无需定义它:

sum([8,5,6,7,5,7])