python生成回文数
from itertools import product def palindromeNum(n): return [n*'%s'%tuple(list(i)+list(i[n*(n-1)/2%(n-1)-1::-1])) for i in product(*([range(1,10)]+[range(0,10)]*((n+1)/2-1)))] #n>1 print map(palindromeNum, [3,4,5]如果需要产生回文数,数据量不大时,往往会判断是否对称或比较反转后是否还是自身,然后过滤,不过指定的范围较大时,效率就不高了
n位的回文数是其实是由前Ceiling(n/2)位决定的,以上代码采用这种构造方法生成,经测试生成10位以内的回文数不到1 s (不输出)