如何在嵌套列表中乘以整数?

时间:2016-02-20 01:18:10

标签: python list nested

我需要编写一个函数,它接受一个数字列表并将它们相乘。示例:[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])
正如您所看到的,部分代码遗失了,但我现在还不知道该怎么做。

1 个答案:

答案 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是元组,则会不必要地失败,发电机,设置等)。