如何迭代字母和数字

Rya*_*yan 5 python loops numbers python-itertools letters

我想知道如何在Python中迭代一系列条件.

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

所以一个短暂的进展将是:

1a
1b
1c
...
1aa
1ab
1ac
...
2aaa
2aab
2aac

etc.
Run Code Online (Sandbox Code Playgroud)

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

##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
Run Code Online (Sandbox Code Playgroud)

我找到了itertools,但找不到好的例子.

Mic*_*ber 5

您可以使用itertools.product和执行此操作itertools.chain.首先定义数字和字母的字符串:

numbers = '0123456789'
alnum = numbers + 'abcdefghijklmnopqrstuvwxyz'
Run Code Online (Sandbox Code Playgroud)

使用itertools.product,你可以得到各种长度字符串的字符元组:

len2 = itertools.product(numbers, alnum) # length 2
len3 = itertools.product(numbers, alnum, alnum) # length 3
...
Run Code Online (Sandbox Code Playgroud)

将所有长度的迭代器链接在一起,将元组连接成字符串.我会用列表理解来做到这一点:

[''.join(p) for p in itertools.chain(len2, len3, len4, len5, len6)]
Run Code Online (Sandbox Code Playgroud)