首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何遍历alpha和数字数字

如何遍历alpha和数字数字
EN

Stack Overflow用户
提问于 2012-03-17 06:17:32
回答 4查看 7.8K关注 0票数 6

我想知道如何在Python中迭代一组条件。

  1. 字符串,具有2-6个较低的alpha或数字字符
  2. 第一个字符总是数字

因此,一个简短的进展是:

代码语言:javascript
运行
复制
1a
1b
1c
...
1aa
1ab
1ac
...
2aaa
2aab
2aac

etc.

一个可怕的例子,可以做到前两个是

代码语言:javascript
运行
复制
##Loop through 1a-z0-9
start = '1'
l = 97
while l < 123:
    num = start
    num += chr(l)
    print num
    l += 1

l = 48
while l < 58:
    num = start
    num += chr(l)
    print num
    l += 1

我找到了迭代工具,但是找不到好的例子。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-17 07:49:29

您可以使用itertools.productitertools.chain来完成这一任务。首先定义数字和字母的字符串:

代码语言:javascript
运行
复制
numbers = '0123456789'
alnum = numbers + 'abcdefghijklmnopqrstuvwxyz'

使用itertools.product,您可以获得具有不同长度字符串的字符的元组:

代码语言:javascript
运行
复制
len2 = itertools.product(numbers, alnum) # length 2
len3 = itertools.product(numbers, alnum, alnum) # length 3
...

将所有长度的迭代器链接在一起,将元组连接到字符串中。我会用一张清单来理解它:

代码语言:javascript
运行
复制
[''.join(p) for p in itertools.chain(len2, len3, len4, len5, len6)]
票数 5
EN

Stack Overflow用户

发布于 2012-03-17 07:34:16

我会使用迭代工具中的产品函数。

代码语言:javascript
运行
复制
import itertools 
digits = '0123456789'
alphanum = 'abcdef...z' + digits # this should contain all the letters and digits

for i in xrange(1, 6):    
    for tok in itertools.product(digits, itertools.product(alphanum, repeat=i)):
        # do whatever you want with this token `tok` here.
票数 3
EN

Stack Overflow用户

发布于 2012-03-17 07:48:32

您可以在基数26中考虑这个问题(忽略第一个数字,我们将把它放在一个单独的例子中)。因此,对于基数26中从“a”到“zzzzz”的字母是0和( 26,26,26,26)=26^0+ 26^2 +26^2+ 26^3 + 26^4 + 26^5。

代码语言:javascript
运行
复制
 letters = 'abcdef..z'

 def num_to_word( num ):
      res = ''
      while num:
           res += letters[num%26]
           num //= 26
      return res

现在,要编写枚举以下内容的函数

代码语言:javascript
运行
复制
 def generator():
     for num in xrange(10):
         for letter_num in xrange( sum( 26 ** i for i in xrange( 6 ) ) + 1 ):
             tok = str(num) + num_to_word( letter_num )
             yield tok
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9747779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档