python中filter和切片实现回文函数

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

1.下面是我的代码:

#!usr/bin/env python3
#-*- coding=utf -8-*-
#回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()筛选出回数
def is_palindrome(n):
    s = str(n)    #另:对str也可以进行切片,和list方法一样
    a = 0
    if len(s) ==1:
        return n
    elif a <= len(s)/2:
        if s[a] == s[len(s)-a-1]:
            a = a+1
            return n
output = filter(is_palindrome,range(1,1002))
print('1~100:',list(output))

2.下面是大神代码,最终的效果都是一样的:

#!usr/bin/env python3
#-*- coding=utf -8-*-
#回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()筛选出回数
def is_palindrome(n):
    return str(n) == str(n)[::-1]
output = filter(is_palindrome, range(1,1002))
print('1~1002:',list(output))

3.大神的代码不好理解,来复习下python中[-1]、[:-1]、[::-1]、[n::-1]使用方法

原文链接:https://blog.csdn.net/qq_21840201/article/details/85084621

#!usr/bin/env python3
#-*- coding=utf -8-*-
import numpy as np
a = np.random.rand(5)
print(a)
[0.64061262  0.8451399   0.965673    0.89256687  0.48518743]

print(a[-1])  ###取最后一个元素
[0.48518743]

print(a[:-1])  ### 除了最后一个取全部
[0.64061262  0.8451399   0.965673    0.89256687]

print(a[::-1])  ### 取从后向前(相反)的元素
[0.48518743  0.89256687  0.965673    0.8451399   0.64061262]

print(a[2::-1])  ### 取从下标为2的元素翻转读取
[0.965673  0.8451399   0.64061262]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值