我写了一个程序来找到给定字符串中最长的回文。问题是我想要消除索引变量的所有实例,以使程序更“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
答案 0 :(得分:2)
这里可能更加pythonic是开始尊重该语言的标准和建议,如PEP8良好做法:
不要将input
或list
等内置函数/对象用于变量名称。这会覆盖这些内置函数的默认行为。对于简单的对象,s
和l
可能至少是一个选项
对变量,对象和函数名称使用一致且简单的大小写约定。首选is_palindrome
至isPALINDROME
显式优于隐式:尽可能在代码中显示意图。作为回文字符串意味着字面意思是“字符串以相反的顺序等于字符串”。 Python中的s
反向字符串为s[::-1]
,因此函数可以是:
def is_palindrome(s): return s==s[::-1]