python 产生回文数

Python012

python 产生回文数,第1张

from itertools import product

def palind(n):

return [n*'%s'%tuple( list(i) + list(i[-(n%2)-1::-1]) ) for i in product(*( [range(1,10)]+[range(10)]*((n-1)/2)) )]

print map(palind, [3,4,5])

如果需要产生回文数,一般会判断是否对称或比较反转后是否还是自身然后过滤,范围较大时,效率就不高了

n位的回文数是其实是由前Ceiling(n/2)位决定的,以上代码采用构造法生成回文数,生成10位以内的回文数<1s (不输出)

a=input('输入:')#输入字符串

b=a[::-1]#倒序输出

if a==b:#判断是否相等

print('{} 是回文数'.format(a))

#format方法输出

else:

print('{} 不是回文数'.format(a))

#format方法输出