Python:返回给定两个多字符串的范围

Python:返回给定两个多字符串的范围,python,Python,正在寻找有关编写函数以执行以下操作的帮助: 输入: 两个多字符字符串,如“AA”和“AD” 输出: 从第一个多字符字符串到secnod的范围。例如:“AA”“AD”应返回“AA”、“AB”、“AC”、“AD” 此外,该函数还应环绕字母表,因此“AZ”“BB”将产生“AZ”“BA”“BB” 我试过: import string alphabet = list(string.ascii_lowercase) racks = list([i+b for i in alphabet for b in

正在寻找有关编写函数以执行以下操作的帮助:

输入: 两个多字符字符串,如“AA”和“AD”

输出: 从第一个多字符字符串到secnod的范围。例如:“AA”“AD”应返回“AA”、“AB”、“AC”、“AD” 此外,该函数还应环绕字母表,因此“AZ”“BB”将产生“AZ”“BA”“BB”

我试过:

import string

alphabet = list(string.ascii_lowercase)
racks = list([i+b for i in alphabet for b in alphabet])

rn = 1
for rack in racks:
    print(rack)
    rn = rn + 1

但这会给每个多行字符串AA-ZZ。我希望用户能够指定最后一个字符串的结束位置

我认为,最通用的解决方案包括将字母与序列号进行转换:

ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'  
#ALPHABET = 'BCXYZ'   # you can define/restrict the symbol set any way you like
LOOKUP = { letter.upper() : i for i, letter in enumerate( ALPHABET ) }
BASE = len( ALPHABET )

def l2n(letters):
    "Convert a letter code to a serial number"
    return sum(LOOKUP[ch] * BASE ** i for i, ch in enumerate(letters[::-1].upper()))

def n2l(number, minlength=2 ):
    "Convert a serial number to a letter code"
    letters = ''
    while True:
        letters += ALPHABET[number % BASE]
        number //= BASE
        if not number and len(letters) >= minlength:
            return letters[::-1]

def sequence(first, last, minlength=None):
    """
    Generator function for letter codes (each
    at least `minlength` characters long) from
    `first` to `last` inclusive.
    """
    if minlength is None:
        minlength = min(len(first), len(last))
    for i in range(l2n(first), l2n(last) + 1):
        yield n2l(i, minlength)

# example 1
print(list(sequence('BB', 'CZ')))


# example 2 - use the generator to start anywhere and
# produce any length of sequence, without excessive
# demands on memory:
for code in sequence('XYZZY', 'ZZYZX'):
    print(code)

你试过什么吗?你应该怎么做“?。嘿,对不起,原来的帖子很模糊。我已经更新了=)很不幸,您花了这么长时间才添加自己的代码,所以您的问题就结束了。我已经投票决定重新打开它,现在您已经添加了自己的代码尝试,但这可能需要一段时间。但这里有一个想法。使用两个嵌套循环。外部循环从第一个输入字符串中的第一个字符一直到(包括)第二个输入字符串中的第一个字符。此循环字符是输出字符串中的第一个字符。对于每个循环字符,设置输出字符串中第二个字符的下限和上限。。。。。。每个限制设置使用一个
if
语句,该语句查看第一个输出字符是否等于第一个输入字符(用于下限)或第二个输入字符(用于上限)。然后使用这些限制在第二个输出字符上循环,并为内部循环的迭代构建完整的输出字符串。这个想法清楚吗?代码比解释容易。