在python中的字梯

时间:2010-06-13 04:36:16

标签: python

我正在尝试在python中创建一个单词梯形图程序。我想生成与给定单词类似的单词。在c ++或java中,我将浏览原始字符串中的每个有效索引,并将其替换为英文字母中的每个字母,并查看结果是否为有效字。例如(伪代码)

for (int i = 0; i < word.length(); i++) {
  for (every character c in the alphabet) {
    change the letter of word at index i to be c. 
    if the result is a valid word, store it in a list of similar words
  }
}

然而,这似乎不是一种非常“蟒蛇”的做事方式。我如何在python中解决这个问题?

1 个答案:

答案 0 :(得分:2)

类似单词的生成器(采用谓词,即返回true或false的函数参数,以检查单词是否有效)似乎是合理的第一步:

import string

def allsimilar(word, valid):
  wl = list(word)
  for i, c in enumerate(wl):
    for x in string.ascii_lowercase:
      if x == c: continue
      wl[i] = x
      nw = ''.join(wl)
      if valid(nw): yield nw
    wl[i] = c

如果您想要列表,list(allsimilar(word, valid))当然会为您构建。

或者,您可以省略wl并将新单词直接构建为

nw = word[:i] + x + word[i+1:]

但是,如果没有仔细计时,我怀疑可能会更慢。

一个小的可能优化也是import array,然后使用

  wl = array.array('c', word)

而不是list(word)