过滤回文数(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。

你可能感兴趣的:(过滤回文数(filter))