在3个单独的场合迭代(A-Z+0-9)的最佳方法是什么。 例如AAA,AAB..AA0,AA1..ZZ0,ZZ1…一直到999。对于数字或字符是否出现在两个插槽中都没有限制。在
chars = [string.ascii_uppercase + string.digits]
genned_chars = []
for char in list(itertools.product(''.join(char), repeat=3)):
genned_chars.append(''.join(char))
从那里我要去哪里?在
编辑:
^{pr2}$
您不需要将字符串放入list中,也不需要使用
list
作为生成器,也不需要使用列表理解来连接产品:您可以不使用
itertools
通过对chars字符串进行三次传递来完成。但我不确定性能如何(编辑:我已经确认这比上面@Kasra的itertools列表理解解决方案要慢——在我的机器上大约是15ms),但是通过查看代码可以更清楚地看到您在做什么。在编辑2:然而,使用列表理解实现上述功能比使用itertools更快:
^{pr2}$无关,但可能有帮助取决于你在做什么。在
假设您要按索引选择一个数字,然后直接转到该字符串。在
这可能是有用的,如果你正在创建一个网址缩写,例如。记住要达到的索引,将其递增1,然后返回新的组合。在
相关问题 更多 >
编程相关推荐