如何创建一个添加给定列表中所有数字的函数?在Python中。 像这样:
list = [8, 5, 6, 7, 5, 7]
def sum(list):
???
答案 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])