我正在尝试在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中解决这个问题?
答案 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)
。