繁体   English   中英

如何返回 function 中的数字组合?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM