所有可能的单词,直到len 8

时间:2014-10-19 04:47:20

标签: python string algorithm generator

目标:创建一个单词生成器,用字母表中的52个字母创建每个单词,直到8个字符。

我知道基本的是,生成器必须能够将x(在这种情况下基线的数量为字母表)设为8的幂,但我无法将其放入适当数量的代码中,样本:

alphabet = "abcdefghijklmnopqrstuvwxyz"
or 
alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n",...] # u get the point

并且对于数组变量中的每个元素:

for i in alphabet:
      wordlist.append(something)

将创建类似于:

的内容

一 AB AC 广告 ... ABA ABC ABD ... A B C D ... zzzzzzzz

3 个答案:

答案 0 :(得分:1)

你可以使用递归来做到这一点,除了说我建议你的字母表存储为一个字符数组或一个长度为1的字符串数组之外,我会将基数和递归情况留给你。为了让你更容易循环它

const int MAX_LENGTH = 8
void myFunction(String currentString) {
  if(currentString.length == MAX_LENGTH) {
    // base case
  } else {
    // recursive case
  }
}

答案 1 :(得分:0)

你可以使用itertools包来做到这一点。

import itertools
alphabet = "abcdefghijklmnopqrstuvwxyz"
l=list(alphabet)

# as a list 
genList= ["".join(i) for j in xrange(8) for i in itertools.combinations(l, j+1)]
print genList # to test
# as generator
("".join(i) for j in xrange(8) for i in itertools.combinations(l, j+1))

如果你想打印r的长度

for item in itertools.combinations(input_list, r = 8):
            yield "".join(list(item)) 

输出:所有组合

[...'' ac',' ad',' ae',' af&#39 ,' ag'啊',' ai',' aj',' ak',&#39 ; al',' am',' an',' ao',' ap',' aq' ,''',' at',' au',' av',' aw',' ax',' ay',' az',' bc',...]

答案 2 :(得分:0)

您可以使用itertools轻松解决这些问题,但这是一个简单的递归示例:

from string import ascii_lowercase,ascii_uppercase
letters = " "+ascii_lowercase+ascii_uppercase # 52 letters + blank space
wordlist = []

def GetCombinations(str):
    for i in xrange(0,53):
        word = str+letters[i]
        wordlist.append(word)
        if (len(word)<8):
            GetCombinations(word)

GetCombinations("")

这简单地以递归方式确定您传入的字符串的所有组合(字母+空格)。如果您愿意,可以轻松处理空白区域。