【问题标题】:How to iterate through the alphabet? [duplicate]如何遍历字母表? [复制]
【发布时间】:2017-10-10 15:13:57
【问题描述】:

如何遍历字母表并让它继续超过字母 Z?例如 - a,b,c ... y,x,aa,ab,ac,ad

目前这是我的数组

letters = [
           "a","b","c","d","e","f","g","h","i","k",
           "l","m","n","o","p","q","r","s","t","u",
           "v","w","x","y","z", "aa", "ab", "ac", "ad", "ae",
           "af", "ag", "ah", "ai", "aj", "ak", "al", "am", "an",
           "ao", "ap", "aq", "ar", "as", "at", "au", "av","aw", "ax", "ay",
           "az", "ba", "bb", "bc", "bd", "be", "bf", "bg", "bh", "bi",
           "bj", "bk", "bl", "bm", "bn", "bo", "bp", "bq", "br", "bs", "bt",
           "bu", "bv","bw", "bx", "by", "bz","ca","cb","cc","cd","ce",
           "cf","cg","ch","ci","cj","ck","cl","cm","cn","co","cp",
           "cq","cr","cs","ct","cu","cv","cw"]

但我想让它在循环中创建。

【问题讨论】:

  • 你已经尝试了什么?
  • 这是通用算法,在 C# 中:stackoverflow.com/a/182924/2436175。关键是每一步除以 26 将余数转换为一个字母,直到除法返回 0。使用%(模)得到余数,//(下除法)更新下一步的值。
  • @Antonio 我想你会同意 Uriel 的第二个基于 itertools 的解决方案比搞乱模运算要干净得多。
  • 您真的希望它们出现在列表中吗?我想你会发现拥有一个为你生成这些字符串的生成器会更方便。
  • @PM2Ring 我同意。由于同时我已经准备好解决方案,我将其发布为here。它不应该伤害:)

标签: python python-2.7 python-3.x


【解决方案1】:

你可以试试这个:

import string

letters = list(string.ascii_lowercase)

letters.extend([i+b for i in letters for b in letters])

print letters

通过使用双 for 循环,我们可以像往常一样迭代字母表,除了我们可以将迭代放在列表推导中,以节省空间并更具 Python 风格。

【讨论】:

  • 不只是代码转储,为什么不解释你的程序是做什么的呢?现在这还不是一个完整的答案。
  • 你是对的。请查看我最近的编辑。
  • 这假设他们想停在zz,一个通用的解决方案会更有用,如副本中所建议的
  • 好点。但是,我认为在这个问题的背景下并具体按照 OP 的要求进行操作,这个解决方案就足够了。
【解决方案2】:

因为string.ascii_lowercase 包含所有小写字母,您可以在一个循环(对于 1 个字母字符串)或两个(对于 2 个字母字符串)中遍历它们,然后将它们添加到列表中,像这样:

import string
list = []
for c in string.ascii_lowercase: 
    list.append(c)

for c1 in string.ascii_lowercase:
    for c2 in string.ascii_lowercase:
        list.append(c1+c2)

print(list)

【讨论】:

  • 不只是代码转储,为什么不解释你的程序是做什么的呢?现在这还不是一个完整的答案。
【解决方案3】:

string 模块可以解决问题。

import string
alphabets=list(string.ascii_lowercase)
output=[] # output list
for a in alphabets:
     output.append(a)
for a in alphabets:
     for b in alphabets:
         output.append('%s%s' % (a,b))
print output

【讨论】:

    猜你喜欢
    • 2013-06-15
    • 2013-05-23
    • 1970-01-01
    • 2022-11-14
    • 2023-03-25
    • 1970-01-01
    • 2012-04-02
    • 2015-05-31
    • 1970-01-01
    相关资源
    最近更新 更多