Python中可变数量的参数和递归

敏捷的

我想编写一个递归函数,该函数采用可变数量的参数(每个参数是一个可迭代的列表或集合),并返回每个参数的所有串联组合的集合。我学习了如何使用可变数量的参数编写函数,并且知道如何编写递归函数,但是我不知道如何在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:] )我在这里想要做的是将除第一个参数之外的所有原始参数传递给函数(从而创建递归)。这显然不是做到这一点的方法。我的问题是:这可以做到吗?

附:我知道我可以使用带有一个参数的列表列表来完成相同的任务,但是我很好奇这是完全可能的。

亚瑟·维斯(Arthur Vaisse)

请求的工作通过以下几行完成:

args = list(args)
args.pop(0)
recursiveCall( *tuple(args) )

在这里,您的函数的实现有点麻烦(或者我可能误解了您对set的使用)。

def generate_combinations( *args, **kwargs ):
    print("called with", args)
    #terminate recursion
    if len(args) == 1:
        return list(set(args[0]))

    #recursion
    else:
        result = []
        args = list(args)
        heads = args.pop(0)
        tails = generate_combinations( *args, **kwargs )
        for head in heads:
            for tail in tails:
                result.append(head + tail)
        return result

if __name__ == '__main__':
    allDigits = [ '1', '2', '3' ]
    lastDigit = [ '4', '5' ]
    letters   = [ 'a', 'b' ]
    print("{}".format( generate_combinations( allDigits, lastDigit, letters , Useless='parameter')))

执行给:

['14a', '14b', '15a', '15b', '24a', '24b', '25a', '25b', '34a', '34b', '35a', '35b']

希望你喜欢这个;)

亚瑟。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python中可变数量的参数和递归

来自分类Dev

python中可变数量的参数

来自分类Dev

在PHP中传递可变数量的参数(键和值)

来自分类Dev

在Python 3中传递可变数量的参数

来自分类Dev

Swift方法中可变数量的参数

来自分类Dev

类中可变数量的参数

来自分类Dev

Swift方法中可变数量的参数

来自分类Dev

C中可变数量的参数?

来自分类Dev

函数中可变数量的参数

来自分类Dev

在 Python 中连接可变数量的列表

来自分类Dev

带有argparse的Python中的一个参数如何有可变数量的参数?

来自分类Dev

Python在同一函数中使用关键字和可变数量的参数

来自分类Dev

使用<macrodef>和exec可变数量的参数

来自分类Dev

使用<macrodef>和exec可变数量的参数

来自分类Dev

Python咖喱函数具有可变数量的参数

来自分类Dev

使用可变数量的参数馈送python函数

来自分类Dev

是否可以在lambda中捕获可变数量的参数?

来自分类Dev

为代码中的函数调用生成可变数量的参数

来自分类Dev

在NetLogo中运行具有可变数量的参数的任务

来自分类Dev

Firebird存储过程中可变数量的参数

来自分类Dev

如何在Django查询中处理可变数量的参数

来自分类Dev

如何在Google表格中接受可变数量的参数

来自分类Dev

Firebird存储过程中可变数量的参数

来自分类Dev

获取Javascript函数中可变数量的参数

来自分类Dev

在NetLogo中运行带有可变数量的参数的任务

来自分类Dev

如何在r中打印可变数量的参数?

来自分类Dev

在 C 中传递可变数量参数的更紧凑的方法

来自分类Dev

VHDL中可变数量的输入和输出

来自分类Dev

在python neat中设置可变数量的输入节点

Related 相关文章

热门标签

归档