Python:递归

TIM*_*TIM 2 python recursion concatenation

虽然有很多关于网络递归的信息,但我没有发现任何能够应用于我的问题的信息.我仍然是编程的新手所以请原谅我,如果我的问题相当微不足道.

谢谢你的帮忙:)

这就是我想要的结果:

listVariations(listOfItems, numberOfDigits) 

>>> listVariations(['a', 'b', 'c'], 1)
>>> ['a', 'b', 'c'] 

>>> listVariations(['a', 'b', 'c'], 2)
>>> ['aa', 'ab', 'ac', 'ba', 'bb', 'bc', 'ca', 'cb', 'cc']

>>> listVariations(['a', 'b', 'c'], 3)
>>> ['aaa', 'aab', 'aac', 'aba', 'abb', 'abc', 'aca', 'acb', 'acc', 'baa', 'bab', 'bac', 'bba', 'bbb', 'bbc', 'bca', 'bcb', 'bcc', 'caa', 'cab', 'cac', 'cba', 'cbb', 'cbc', 'cca', 'ccb', 'ccc']
Run Code Online (Sandbox Code Playgroud)

但到目前为止,我只能提出一个功能,我需要提前指定/知道位数.这是丑陋和错误的:

list = ['a', 'b', 'c']

def listVariations1(list):
  variations = []
  for i in list:
    variations.append(i)
  return variations

def listVariations2(list):
  variations = []
  for i in list:
    for j in list:
      variations.append(i+j)
  return variations

def listVariations3(list):
  variations = []
  for i in list:
    for j in list:
      for k in list:
        variations.append(i+j+k)
  return variations

oneDigitList = listVariations1(list)
twoDigitList = listVariations2(list)
threeDigitList = listVariations3(list)
Run Code Online (Sandbox Code Playgroud)

这可能非常简单,但是当函数调用自身时,我无法想出一种连接字符串的好方法.

谢谢你的努力 :)

Sri*_*thy 5

您可以使用该product()功能itertools

  • `list(''.join(item)for item in itertools.product(list_,repeat = 3))` (4认同)