Python中使用filter函数筛选出回数

Python中使用filter函数筛选出回数

作为一个编程的初学者,最近在参照廖雪峰老师的网站资源学习Python。

在网站中 Python教程/函数式编程/高阶函数/filter 下有一道练习题是:

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

由于对编程方面学识尚浅,还没有养成一些良好的编程思维,因此拿到这个题目之后我利用数学思维来进行思考,并写下了一段代码,测试结果表明实现了所需功能。具体代码如下所示:# -- coding: utf-8 --

----代码-----

# -*- coding:utf-8-*-
def is_palindrome(n):
    a=1 #先将一些参数的初值进行定义
    m=n
    l=[]
    if n/10<1: # 若输入值n<10,则直接输出
        l.insert(-a,n)
        a=a+1
    else:   #若输入值n>=10,则先将n的各个数位上的数值分开存储到所创建的list中
        while n/10>=1:  #筛选n的十位及以上数位上的数值
            l.insert(-a,n%10)
            a=a+1
            n=n//10 
        l.insert(-a,n)    #剩下的个位上的数值直接添加到list中
   
    for b in range(0,a//2):#对所生成的list中的相应元素值进行比较,判断是否处于对称位置的元素相等
        if l[b]==l[-b-1]:
            return m      #将符合判断条件的结果返回

----运行结果------
Python中使用filter函数筛选出回数_第1张图片

然而,在看到网上有些人所写的代码之后,惊讶于他们代码的简洁性!例如:

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

利用字符串的特性,与取反操作,只需三行就可以实现所需功能!

编程之路,任重道远。

你可能感兴趣的:(Python)