过滤回文数(filter)

题目

回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()滤掉非回数:

def is_palindrome(n):

pass

# 测试:(求1000以内的回文数)

output = filter(is_palindrome, range(1, 1000))

print(list(output))


思路

1、构建一个11开始的整数序列,无限生成。

2、定义一个筛选函数:

①把整数换成字符串:str(n)

②切片字符串,判断是否前后相等,把不想等的筛选掉。

3、定义一个生成器,不断返回下一个回文数

4、设置退出循环的条件:1000以内的回文数


答案:

谁能想到,答案只有一句话?

defis_palindrome(n):

  return n ==int(str(n)[::-1])


①把n转换为str

②[::-1] 切片的知识,意思是将整个字符串反过来

③判断 n  是否等于 反过来的切片,如果等于,就是True。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容