栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

python->数字和字母的组合

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python->数字和字母的组合

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

看一下标准库模块

itertools
。特别是
combinations()
permutations()
product()
功能。

import itertoolslower_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 + numfor 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 + numdef 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)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/516927.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号