如何在Python中按字母降序获得下一个字符串?

2024-09-29 23:21:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个简单的python程序,在列表中查找字符串,如果找不到,则按字母降序生成下一个字符串 。我的意思是,如果它没有找到'abz'它将生成ac在到达'z'时删除最后一个字符。你知道吗

另一个例子:

我有这样一个清单: list=['allena'、'allend'、'alphosis'、'alpinist'、'alternative']

假设我不知道列表中有什么。

函数在列表中查找allend之后,它将检查alleneallenz,以及alleoallez之后和alleallz ... 因此,每当字符串'z'时,就删除字符串中的最后一个字符。。。。功能将达到alpalt。。。直到达到a

函数将更改字符串的最后一个字符,并在字符串变为'z'时将其删除,直到它只保留第一个字符。你知道吗

谢谢你们!你知道吗


Tags: 函数字符串程序列表字母字符aclist
2条回答

下面是一个使用筛选函数的问题,该函数使用从您的规范生成的单词列表。你知道吗

findall = lambda pred, word: filter(pred, words_gen(word)) 

def words_gen(word):
    yield word
    while True:
        lastchr = word[-1]
        if len(word) == 1 and lastchr == 'z':
            break

        new_lastchr = chr(97 + ((ord(lastchr) - 96) % 26))
        if lastchr == 'z':
            word = word[:-2] + new_lastchr
        else:
            word = word[:-1] + new_lastchr
        yield word


def check_match(it):
    def match(word):
        try:
            it.index(word)
        except ValueError:
            return False
        else:
            return True
    return match

lst = ['allena', 'allend','alphosis','alpinist', 'alternative']

> print(list(findall(check_match(lst), 'allena')))

['allena', 'allend']

使用生成器函数!你知道吗

def mygenerator(word):
  while len(word) > 0:
    lastletter = word[-1].lower()    # get last letter
    word = word[0:-1]                # remove last letter
    for lv in range(ord(lastletter), ord('z')+1):
      letter = chr(lv)
      yield word+letter

下面是一个测试:

>>> print(list(mygenerator('jason')))
['jason', 'jasoo', 'jasop', 'jasoq', 'jasor', 'jasos', 'jasot', 'jasou', 'jasov', 'jasow', 'jasox', 'jasoy', 'jasoz', 'jaso', 'jasp', 'jasq', 'jasr', 'jass', 'jast', 'jasu', 'jasv', 'jasw', 'jasx', 'jasy', 'jasz', 'jas', 'jat', 'jau', 'jav', 'jaw', 'jax', 'jay', 'jaz', 'ja', 'jb', 'jc', 'jd', 'je', 'jf', 'jg', 'jh', 'ji', 'jj', 'jk', 'jl', 'jm', 'jn', 'jo', 'jp', 'jq', 'jr', 'js', 'jt', 'ju', 'jv', 'jw', 'jx', 'jy', 'jz', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

这实现了您请求的大部分逻辑。我希望它有助于说明python是多么灵活和强大。你知道吗

相关问题 更多 >

    热门问题