python 产生回文数

发布网友 发布时间:2022-04-23 15:48

我来回答

2个回答

热心网友 时间:2022-04-07 12:57

from itertools import proct

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

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

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

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

热心网友 时间:2022-04-07 14:15

from itertools import proct

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

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

如果需要产生回文数,一般会判断是否对称或比较反转后是否还是自身然后过滤,范围较大时,效率就不高了
n位的回文数是其实是由前Ceiling(n/2)位决定的,以上代码采用构造法生成回文数,生成10位以内的回文数<1s (不输出)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com