生成符合特定条件的7个字母单词列表 - Python

3
我正在尝试在Python中生成符合以下条件的7个字母单词列表:
  1. 单词长度固定为7个字母。
  2. 单词仅由大写字母组成(我使用ascii_uppercase)。
  3. 单词形式为?D?R?T?,其中?作为占位符。
因此,以下是有效的示例:
  • ADPRETE
  • BDFRUTW
  • JDQRQTA
  • ZDZRZTZ
  • QDQRQTQ
我使用了下面的代码段,但想知道如何生成符合第三个条件的单词。任何帮助/指针都将非常棒!
from string
from itertools import product

for n in range (7,8):
   for arr in product(string.ascii_uppercase, repeat=n):
      print ''.join(arr)
3个回答

2
import string
import itertools as IT

for arr in IT.product(string.ascii_uppercase, repeat=4):
    print ''.join('{}D{}R{}T{}'.format(*arr))

2

通用解决方案。只需创建一个掩码,它就会为您完成其余的工作 :)

from string import ascii_uppercase
from itertools import product

def gen_words(mask):
    replace = mask.count('?')
    mask = mask.replace('?', '{}')
    for letters in product(ascii_uppercase, repeat=replace):
        yield mask.format(*letters)

例子:

>>> list(gen_words('?Z'))
['AZ', 'BZ', 'CZ', 'DZ', 'EZ', 'FZ', 'GZ', 'HZ', 'IZ', 'JZ', 'KZ', 'LZ', 'MZ', 'NZ', 'OZ', 'PZ', 'QZ', 'RZ', 'SZ', 'TZ', 'UZ', 'VZ', 'WZ', 'XZ', 'YZ', 'ZZ']

0
from string import ascii_uppercase
from itertools import product

for letters in product(ascii_uppercase, repeat=4):
    print "%sD%sR%sT%s" % letters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接