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      #将符合判断条件的结果返回

----运行结果------
运行结果

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

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

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

编程之路,任重道远。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值