2014-01-28 50 views
0

我想以這種方式來遍歷:Python的迭代通過A到ZZZZ

a, b, c, d, ....z, 
aa, ab, ac, ad, ..., az, 
ba, bb, bc, bd, ...bz, ...zz, 
aaa, aab, ...., zzzz 

這似乎是棘手比我想象的那樣。

不能讓我的頭靠近它。

什麼對'a'進行置換來'zzzz'

  1. 最好的方式,我想我應該做的,而循環的for循環,而不是因爲我不知道循環的次數我必須執行,而是知道起點('a')和終點('zzzz')是什麼?
  2. 也許有一個函數返回下一個項目循環?如果是這樣,下一個排列的規則是什麼?然後,我可以檢查下一個項目是'zzzz',如果沒有,繼續。

嗯有人有想法嗎?

+3

這與[此問題](http://stackoverflow.com/questions/14694006/all-strings-with-list-of-characters)是一樣的嗎? – DSM

+0

@DSM ohhh從來不知道這樣的模塊存在。似乎是一種可能性,讓我玩弄它。謝謝! – ealeon

+1

到目前爲止,人們已經給出了涉及'排列'和'combination_with_replacement'的答案。最終他們會發展成產品,他們會恢復我原來的答案。 :^) – DSM

回答

2
import itertools 
import string 

strings = [''.join(letters) 
      for length in xrange(1, 5) 
      for letters in itertools.product(string.ascii_lowercase, 
              repeat=length)] 

這越過每長度從1至4,以及每個長度,取的'abcdefghijklmnopqrstuvwxyz'笛卡爾乘積與自身的許多倍。

+0

最好使用'string.ascii_lowercase',因爲它同時存在於Python2和3中。 –

+0

@MatthewTrevor:是的,我們可能不希望這也是依賴於語言環境的。 – user2357112