在Python中替换索引变量

时间:2013-08-30 15:02:07

标签: python

我写了一个程序来找到给定字符串中最长的回文。问题是我想要消除索引变量的所有实例,以使程序更“pythonic”。我使用枚举来保存输入字符串中每个字符的索引,但我不知道如何消除搜索索引。谁能提供一些见解。有关改进计划的任何提示都会被贬低。感谢。

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

1 个答案:

答案 0 :(得分:2)

这里可能更加pythonic是开始尊重该语言的标准和建议,如PEP8良好做法:

  • 不要将inputlist等内置函数/对象用于变量名称。这会覆盖这些内置函数的默认行为。对于简单的对象,sl可能至少是一个选项

  • 对变量,对象和函数名称使用一致且简单的大小写约定。首选is_palindromeisPALINDROME

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

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