Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何创建由a和b组成的特定长度的单词?_Python_List_Recursion_Word_String Length - Fatal编程技术网

Python 如何创建由a和b组成的特定长度的单词?

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

我想创建一个由两个字母组成的具有一定长度(例如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(' ',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更注重迭代。看看模块,你应该在那里找到答案。谢谢!我会尽力理解的谢谢!至少现在我知道它是如何工作的了