Skip to main content
 首页 » 编程设计

python之遍历未知数字长度的字母

2025年05月04日21shangdawei

好的...我需要遍历任意长度的字符串。由于我不知道如何解释这个太好,我的意思是这样的:

def zip(string1,string1): 
    ... 

当使用 "a" 和 "ad" 调用时,它将返回一个列表:

>>>zip("a","ad") 
["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","aa","ab","ac","ad"] 

我试过使用 map(chr,range(ord('a'),ord('nb')+1)) 但我得到了 TypeError: ord() expected一个字符,但找到长度为 2 的字符串,我不知道从这里去哪里。有什么想法吗?

请您参考如下方法:

就是这样:

def zip_(start, end): 
    def __inc(s): 
        if not s: 
            return "a" 
        elif s[-1] != "z": 
            return s[:-1] + chr(ord(s[-1]) + 1) 
        else: 
            return __inc(s[:-1]) + "a" 
 
    s = start 
 
    yield s 
    while s != end: 
        s = __inc(s) 
        yield s 
 
 
print list(zip_("a", "ad")) 

一些评论:

  1. 不要将单词 zip 用作变量或函数的名称,因为它已被保留。
  2. 在解决方案中,zip_ 是一个生成器。我这样做是为了不在内存中保留太多数据。如果您需要一个确切的列表,只需像我在打印语句中所做的那样转换它。
  3. 如果参数错误,函数可能会进入无限循环。例如,如果您调用 zip_("b", "a")。但实际上,如有必要,只需添加几行即可轻松修复。