最近在做一道练习题,给定一个正整数num,求出范围内(1-num)内所有的回数。所谓回数,用我的话理解,就是数字均匀对称分布的数。
举个例子:
121,1111,989,1·······这些都是回数。
有小伙伴可能忘了filter用法,解释下filter是用来干嘛的,它接受两个参数,一个是返回布尔值的函数,另一个是可迭代的序列,把序列作用于函数,返回结果是一个迭代器。
本题的解法是,先产生1到num之间的数值序列,然后写一个筛选条件,就可以用filter了,关于筛选条件中,我们的处理办法是现将这些数值变成字符串,然后比较逆序后的字符串是否与该字符串相等,如果相等就返回True,否则返回False。
上图中我们打印出了1~1000以内的回数。
作者君忽然想到逆序与排列有哪些做法呢?
于是把想到的基础知识手打了一边,留个mark,供以后学习。
1、字符串的排列与逆序:
字符串的排列与逆序首要想到的是slice切片。
切片可接受三个参数【start】、【end】、【step】,也就是开始的位置索引,结束的位置索引,以及步长。这里有个规则,那就是结束的切片索引是取不到的,然后step相当于等差数列的公差,如果是正数就顺序加步长,如果是负数就逆序取步长,如果不设置,默认下为1。举个例子:
总结一下,如果想要解释一个切片是什么意思,不如试试作者君总结的规律:
对字符串切片来说,start,end,step三者的优先级是start>step>end
其次,如果要逆序的话,可以考虑用reversed,返回的是一个迭代器,如果要得到字符串,可以用join。
还有sorted,sorted接受三个参数,可迭代的序列,key,以及布尔值reverse。sorted处理字符串,其实处理的是索引,也就是把索引逆序,然后就得到了逆序列。
2、列表的排序与逆序:
列表也支持切片,与字符串中的形式差不多,这里不再赘述。
reversed处理列表时返回的也是迭代器:
sorted处理列表序列时,列表的数据类型必须一致:
3、字典的排序与逆序:
字典没有切片,只有键对:
reversed与sorted在字典中的应用:
好了,今天的分享就到这了!
总结一下,本文对字符串、列表、字典三种数据结构的排序与逆序进行了介绍,希望对你有帮助!
领取专属 10元无门槛券
私享最新 技术干货