[英]Return the different multiplicative combinations of a list of numbers in Python
[英]How to return the combinations of numbers in a function?
我一直在尝试解决这个涉及排列的 python 问题。 例如,这是当我调用 function 时应该发生的情况:
组合(2, 3) ➞ 6
组合(3、7、4)➞ 84
组合(2、3、4、5)➞ 120
我不知道为什么,但是当我调用它(在下方)时,它出于某种原因返回 2。 我知道计算机只是按照指令进行操作,所以我的代码肯定有问题。 不知道怎么回事,求高人指点! 谢谢!
def combinations(*items):
permu = []
for i in range(0, len(items)):
if i == 0:
permu.append(items[i]*items[i+1])
else:
permu.append(items[i]*permu[i-1])
return sum(permu)
print(combinations(1,2,3,4))
如果您使用的是 python > 3.8 那么您可以简单地使用math.prod
:
import math
def combinations(*items):
return math.prod(items)
您可以创建所有数字的列表并循环遍历它。
def combinations(*items):
mult_list = list(items)
result = 1
for mult in mult_list:
result *= mult
return result
print(combinations(2, 3, 4, 5))
这是我能想到的最短的解决方案:
def combinations(tuple_):
exec(f'print({"*".join([str(n) for n in tuple_])})')
combinations((2, 3, 4, 5))
exec()
基本上将给定的字符串解释为 python 代码并执行它,所以在这种情况下它打印出 2 * 3 * 4 * 5 因为它们都是字符串然后转换为 python 字符串部分“消失”所以它们再次是整数。 (如果你希望它们是字符串,你必须明确声明)将元组中的整数转换为字符串也很重要,这就是为什么有列表理解它为每个 n 创建一个字符串列表 n 在元组
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.