对 python 和一般编程非常缺乏经验。
我正在尝试创建一个函数,该函数生成一个回文数字列表,达到指定的限制。
当我运行以下代码时,它返回一个空列表 []。不确定为什么会这样。
def palin_generator():
"""Generates palindromic numbers."""
palindromes=[]
count=0
n=str(count)
while count<10000:
if n==n[::-1] is True:
palindromes.append(n)
count+=1
else:
count+=1
print palindromes
遍历所有数字是非常低效的。您可以像这样生成回文:
#!/usr/bin/env python
from itertools import count
def getPalindrome():
"""
Generator for palindromes.
Generates palindromes, starting with 0.
A palindrome is a number which reads the same in both directions.
"""
yield 0
for digits in count(1):
first = 10 ** ((digits - 1) // 2)
for s in map(str, range(first, 10 * first)):
yield int(s + s[-(digits % 2)-1::-1])
def allPalindromes(minP, maxP):
"""Get a sorted list of all palindromes in intervall [minP, maxP]."""
palindromGenerator = getPalindrome()
palindromeList = []
for palindrome in palindromGenerator:
if palindrome > maxP:
break
if palindrome < minP:
continue
palindromeList.append(palindrome)
return palindromeList
if __name__ == "__main__":
print(allPalindromes(4456789, 5000000))
这段代码比上面的代码快得多。
另请参阅:Python 2.x remarks。
我是一名优秀的程序员,十分优秀!