Python小练习系列 Vol.11:回文数筛选(filter + 字符串反转)

121 阅读2分钟

🧠 Python小练习系列 Vol.11:回文数筛选(filter + 字符串反转)

🔍 本期我们用 Python 的 filter() 函数结合字符串反转技巧,一行代码搞定“回文数”的判断与筛选!


🧩 一、题目描述

回文数 是指从左向右读、从右向左读都一样的整数,例如:

121、888、909、12321 都是回文数。

请你写一个函数 is_palindrome(n) 判断一个整数是否是回文数,并使用 filter() 函数筛选出 1~1000 以内所有的回文数。


🧠 二、思路解析

我们可以把数字转换成字符串,然后判断它是否等于其反转字符串:

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

👨‍💻 三、Python代码实现

def is_palindrome(n):
    return str(n) == str(n)[::-1]

# 用 filter 过滤出所有回文数
output = filter(is_palindrome, range(1, 1000))
print('1~1000:', list(output))

✅ 四、测试验证

if list(filter(is_palindrome, range(1, 200))) == [
    1, 2, 3, 4, 5, 6, 7, 8, 9,
    11, 22, 33, 44, 55, 66, 77, 88, 99,
    101, 111, 121, 131, 141, 151, 161, 171, 181, 191
]:
    print('测试成功!')
else:
    print('测试失败!')

🧩 五、小结与要点

技巧说明
str(n) == str(n)[::-1]判断是否为回文字符串
filter(func, iterable)过滤出符合条件的元素
list()将 filter 结果转为列表

💡 六、拓展思考

  • 🤔 能否不使用字符串判断回文数?(使用整数反转算法)
  • 🚀 找出所有 5 位的回文数?
  • 🎨 可视化回文数在数字范围中的分布?

❤️ 结语

这题虽然简单,但用到了 Python 函数式编程、字符串操作等基础能力,是非常好的练习题!

📌 下一期预告:快速排序实现(排序算法入门)


👉 点个赞 👍 + 收藏 🌟,让你的代码优雅又简洁!