如何在Python中根据指定长度生成所有字母组合“单词”
生成指定长度的所有字母组合(Python实现)
固定长度的实现方式
当提前明确目标单词长度时,可通过嵌套循环直接生成所有字母组合:
长度为1的实现代码
letters = ["A", "B", "C", ... "X", "Y", "Z"] words = [] for x in range(26): words.append(letters[x]) print(words)
长度为2的实现代码
letters = ["A", "B", "C", ... "X", "Y", "Z"] words = [] for x in range(26): for y in range(26): words.append(letters[x] + letters[y]) print(words)
通用逻辑的困境
若无法提前确定单词长度,嵌套循环的方法就不再适用。尝试编写通用函数时,核心的单词生成逻辑无法完成:
def possible_words(word_length): list_of_words = [] number_of_words = 26 ** word_length for x in range(number_of_words): '''generate the new word here''' list_of_words.append(new_word) return list_of_words
递归尝试与最终解决方案
曾考虑用递归解决,但未成功。后来借助itertools.product实现了需求,最终代码如下:
import itertools alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' word_length = 2 # 此处为测试值,实际长度将由程序动态决定... letter_tuples = itertools.product(alphabet, repeat=word_length) words = ["".join(letter_tuple) for letter_tuple in letter_tuples] print(words)
内容的提问来源于stack exchange,提问作者Valiant
相关产品推荐
相关产品推荐

