我需要编写一个函数,它接受一个数字列表并将它们相乘。示例:[1,2,3,4,5,6]将给我1 * 2 * 3 * 4 * 5 * 6。我真的可以使用你的帮助。如果有嵌套列表,这也需要工作。请帮忙!这是我尝试过的代码.def multiplyNums(p): 总数= 1 因为我在p: if i == type(int)或type(float) 总计=总计* i elif i == type(list): total2 = multiplynums() 如果p ==
print(total)
所属类别([2,3,4,[2,4],2])
正如您所看到的,部分代码遗失了,但我现在还不知道该怎么做。
答案 0 :(得分:3)
from collections import Iterable
def product_of(items):
if isinstance(items, Iterable):
# list of items - reduce it
total = 1
for item in items:
total *= product_of(item) # <= recursive call on each item
return total # (could be a sub-list)
else:
# single value - return it
return items
然后
product_of([1, 2, [3, 4], 5, [6, [7, 8]]]) # => 40320
修改:如果您想避免导入,只需将if isinstance(items, Iterable):
替换为if isinstance(items, list):
(但如果items
是元组,则会不必要地失败,发电机,设置等)。