0

我编写了一个程序来查找给定字符串中最长的回文。问题是我想消除索引变量的所有实例以使程序更“pythonic”。我使用 enumerate 来保存输入字符串中每个字符的索引,但我不确定如何消除搜索索引。任何人都可以提供一些见解。任何关于改进程序的提示都会受到赞赏。谢谢。

def isPALINDROME(input):
    lastINDEX=len(input)-1
    for i, each in enumerate(input):
        if input[i]==input[lastINDEX]:
            lastINDEX-=1
        else:
            return False
    return True

def findLONGEST_palindrome(input):
    list=[]
    strlen=len(input)-1
    for i, each in enumerate(input):
        j=i+1
        try:
            while input[i]!=input[j]:
                j+=1
            if input[i]==input[j]:
                list.append(input[i:j+1])
        except IndexError:
            pass
    return list

out=findLONGEST_palindrome("ASDFASDFDS12345678987654321ASDFjj")
for each in out:
    if isPALINDROME(each):
        print each
4

1 回答 1

2

这里更 Pythonic 的是开始尊重语言的标准和建议,比如PEP8良好实践:

  • 不要使用内置函数/对象,例如inputlist变量名。这会覆盖那些内置的默认行为。s对于简单的对象,l至少可以选择

  • 对变量、对象和函数名称使用连贯且简单的大小写约定。is_palindrome更喜欢isPALINDROME

  • 显式优于隐式:尽可能在代码中显示意图。作为回文字符串的字面意思是“字符串等于倒序的字符串”。sPython 中的反向字符串将为s[::-1],因此该函数可以是:

    def is_palindrome(s): return s==s[::-1]

于 2013-08-30T15:43:23.487 回答