您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python->数字和字母的组合

python->数字和字母的组合

最好不要重新创建标准库中已经存在的功能

看一下标准库模块itertools。特别是combinations()permutations()product()功能

import itertools

lower_a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
upper_a = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
num = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

all = lower_a + upper_a + num

for r in range(1, 3):
    for s in itertools.product(all, repeat=r):
         print ''.join(s)

如果您的Python版本较旧,则可能无法使用这些功能。但是,如果您查看Python 2.6的文档,则可以看到如何在Python中实现所有这些功能。例如,的实现itertools.product如下:

def product(*args, **kwds):
    # product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
    # product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111
    pools = map(tuple, args) * kwds.get('repeat', 1)
    result = [[]]
    for pool in pools:
        result = [x+[y] for x in result for y in pool]
    for prod in result:
        yield tuple(prod)

您也可以尝试使用递归解决方案:

lower_a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
upper_a = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
num = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

all = lower_a + upper_a + num

def recursive_product(myList, length, myString = ""):
    if length == 0:
        print myString
        return
    for c in myList:
        recursive_product(myList, length-1, myString + c)

for r in range(1, 3):
    recursive_product(all, r)
python 2022/1/1 18:52:24 有309人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶