可変数の引数(各引数は反復可能なリストまたはセット)を取り、各引数の連結されたすべての組み合わせのセットを返す再帰関数を作成したいと考えていました。可変数の引数を持つ関数の書き方を学び、再帰関数の書き方も知っていますが、これら 2 つを 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
私のコードの「問題」lastdigits = generate_combinations( args[1:] )
は 7 行目にあります。ここでやりたかったのは、最初の引数を除くすべての元の引数を関数に渡すことです (したがって、再帰を作成します)。そして、これは明らかにそれを行う方法ではありません。私の質問: これを行うことができますか?
Ps: 1 つの引数を持つリストのリストを使用して同じことを達成できることはわかっていますが、これがまったく可能であることに興味があります。