代码:
from functools import reduce
num = 2989
numSplit = [int(x) for x in str(num)]
# convert the number to a list with each digit separated
numProduct = reduce((lambda x,y: x*y), numSplit)
# uses reduce to multiply each number in order
print(numProduct)
问题:
使用NumProduct,我试图找到2*9
、9*8
和8*9
的独立产品
我不知道如何修改lambda来只找到[2,9,8,9]
中数字对(或各种其他长度)的乘积。我需要帮助。Tnx公司
Reduce()
将把整个iterable减少为一个值-这不是您想要的。相反,考虑将相邻的值分组,并在每个组中取乘积这里我
zip
列表numSplit
,它的片numSplit
偏移1,以将每个数字与其右邻居分组。然后我迭代这个,将两个值相乘。如果一个列表比另一个短,zip
会将所有列表截短到最短的长度-这就是这里发生的情况,防止在末尾出现额外的项结果:
更新
如果要支持任意大小的分组,请使用以下方法:
结果:
如果你真的想,你可以在这里使用reduce
相关问题 更多 >
编程相关推荐