【发布时间】:2023-03-20 12:50:02
【问题描述】:
我想编写一个递归函数,它接受一个可变数量的参数(每个参数是一个可迭代的列表或集合)并返回每个参数的所有连接组合的集合。我学会了如何write functions with a variable number of arguments 并且我知道如何编写递归函数,但我不知道如何在 Python 中将这两者放在一起(或者甚至可能)。
这是我的代码:
def generate_combinations( *args ):
# returns all combinations of each of the arguments
if len( args ) == 1:
return set( args[0] )
result = set()
lastdigits = generate_combinations( args[1:] )
for d in args[0]:
result.add( d + lastdigits )
if __name__ == '__main__':
lastDigit = [ '1', '2', '3' ]
allDigits = [ '4', '5' ]
print("{}".format( generate_combinations( allDigits, lastDigit )))
预期输出:
14
15
24
25
34
35
我的代码的“问题”位于第 7 行:lastdigits = generate_combinations( args[1:] )。我想在这里做的是将所有原始参数除了第一个传递给函数(从而创建递归)。这显然不是这样做的方法。我的问题:这可以做到吗?如何做到?
Ps:我知道我可以使用带有一个参数的列表来完成相同的操作,但我很好奇这是否可能。
【问题讨论】:
-
lastdigits = generate_combinations( *args[1:] )
标签: python recursion optional-arguments