python实现回文数筛选的两种思路

自己做题时想的两种方法,供大家参考,有不足也欢迎指出

from functools import reduce
#**********第一种方法*****************
def is_palindrome(n):
	s=str(n)       #将数值转成字符串,用len求出长度,在将其顺序倒置,形成回文
	reverse=[]
	for i in range(len(s)):
		reverse.append(s[-i-1])
	def char2num(L):
		return {'0':0,
		'1':1,'2':2,'3':3,
		'4':4,'5':5,'6':6,
		'7':7,'8':8,'9':9}[L]
	rev=reduce(lambda x,y:x*10+y,map(char2num,reverse))
	return rev%n==0
#**********第二种方法***********************
def is_palindrome2(n):
	rn=[]
	i=n
	while i>0:
		rn.append(i%10)  #这两个顺序一定给要注意,迭代除10求余恰好使数字倒置
		i=i//10
	reverse=reduce(lambda x,y:x*10+y,rn )
	print('rn=',rn)
	print('n=',n)
	print('reverse=',reverse)
	return reverse%n==0	
#**********************************************
output=list(filter(is_palindrome,range(1,100)))
print(output)
output2=list(filter(is_palindrome2,range(1,100)))
print(output2)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值