Python 如何创建由a和b组成的特定长度的单词?
我想创建一个由两个字母组成的具有一定长度(例如1到3)的所有单词的列表。因此,我的输出是: a、 b,aa,ab,ba,bb,。。。。Python 如何创建由a和b组成的特定长度的单词?,python,list,recursion,word,string-length,Python,List,Recursion,Word,String Length,我想创建一个由两个字母组成的具有一定长度(例如1到3)的所有单词的列表。因此,我的输出是: a、 b,aa,ab,ba,bb,。。。。 但我正在努力用python递归地实现它。正确的方法是什么 我相信您可以使用itertools来解决这个问题,这是一种更具python风格的解决方法 list = ['a','b','c'] import itertools for letter in itertools.permutations(list): list.append(' ',joi
但我正在努力用python递归地实现它。正确的方法是什么 我相信您可以使用
itertools
来解决这个问题,这是一种更具python风格的解决方法
list = ['a','b','c']
import itertools
for letter in itertools.permutations(list):
list.append(' ',join(letter))
这将为您提供:
list = ['a', 'b', 'c', 'abc', 'acb', 'bac', 'bca', 'cab', 'cba']
这也可能对您有所帮助。我在以下代码中结合了
itertools
和递归:
from itertools import product,chain
ab = ['a', 'b']
def rec_prod(x):
if x==1:
return ab
elif x==2:
return list(product(ab, ab))
else:
return [tuple(chain((i[0],), i[1])) for i in product(ab, rec_prod(x-1))]
prod_range = lambda y: list(chain.from_iterable(rec_prod(j) for j in range(1, y+1)))
第一个函数递归计算长度为x的所有“单词”,第二个函数返回长度为1到y的所有单词。这有点混乱,效率也不是很高,但是如果你学习我使用递归的方式和我使用的itertools函数(
product
和chain
),我相信你会从中学到一些有用的东西。欢迎使用。没有人会在这里为您编写代码,而是在您遇到困难时提供帮助。你能发布一个代码示例吗?到目前为止你尝试了什么?a,b只有一个字母这可以非递归地完成,你真的需要使用递归解决方案吗?这正是我的问题。我不知道该怎么开始。我不希望有人为我编写代码,但类似于指南或粗略的摘要这样的东西已经对我有很大帮助:)在Python中,递归通常不是理想的解决方案(尽管它肯定有自己的位置)。相反,Python更注重迭代。看看模块,你应该在那里找到答案。谢谢!我会尽力理解的谢谢!至少现在我知道它是如何工作的了