python的有用的几个高阶函数的使用filter/sorted

  1. filter函数,是一个过滤函数。使用方法为filter(f,list),把list里面的每个元素都用f函数进行过滤,返回true的时候,保留。返回fasle的删除。
  2. 过滤一个数列的,只保留奇数,可以如下写代码:
  3. def is_odd(x):
    return x%2==1

ll=range(1,20)
aa=filter(is_odd,ll)
print aa
使用lambda表达式为
bb=filter(lambda x:x%2==1,range(1,20))
print bb
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
删除一个字符串中的大写字母
def is_upper(x):
return x not in “ABCDEFGHIJKLMNOPQRSTUVWXYZ”
str2=“IopJTGtFrCghJuHnN”
str3=filter(is_upper,str2)
print str3
optrghun
过滤一个字符串列表中的空字符串和None
def is_str(x):
return x and len(x)>0
strlist=[“adf”,None,“123”,"",“789”]
str2list=filter(is_str,strlist)
print str2list
[‘adf’, ‘123’, ‘789’]
判断回文数
def is_huiwenshu(x):
numlist=[]
while x:
s=x%10
numlist.append(s)
x=x/10
end=len(numlist)-1
start=0
while start<end:
if numlist[start] != numlist[end]:
return False
start=start+1
end=end-1
return True
aaa=range(1,1002)
print filter(is_huiwenshu,aaa)

sorted函数是一个高阶的排序函数,使用方法为sorted(lsit,key=f),f为函数,为自定义排序方法。下面代码一个实现数值大小排序,一个按照绝对值排序
numlist=[-1,56,41,-89,32,96]
print sorted(numlist)
print sorted(numlist,key=abs)
[-89, -1, 32, 41, 56, 96]
[-1, 32, 41, 56, -89, 96]
对应map里面的数据进行排序
mapnum={“bob”:78,“ppp”:90,“ll”:45,“bb”:56,“plg”:100}
maplist=list(mapnum.items())
print sorted(maplist,key=lambda x:x[1])

[(‘ll’, 45), (‘bb’, 56), (‘bob’, 78), (‘ppp’, 90), (‘plg’, 100)]
sorted函数可以的key值可以写许多排序的条件,按照优先顺序进行操作。默认从小到大排列。(条件在前的放后面,我理解的是这样)如下面的代码示例:
aalist=[1,2,3,8,9,6,3,4,1,2,3,3,2]
print sorted(aalist,key=lambda x:(aalist.count(x),x))
执行结果:
[4, 6, 8, 9, 1, 1, 2, 2, 2, 3, 3, 3, 3]
先比较元素出现的次数,元素次数多的排后面,相同的话比较元素大小。大的排后面。
来个字符串排序
strlist=“12IOpuhdg789YUTRFDionhgde”
print ‘’.join(sorted(strlist,key=(lambda x:(x.isdigit(),x.isdigit() and int(x)%2==0,x.isupper(),x))))
ddegghhinopuDFIORTUY17928
数字放后面,如果是数字偶数放后面,然后是大写字母,再了是比较大小(应该是比较ASCII码值,小的排前面)
顺序是 ASCII 大写字母 奇数 偶数
python的filter过滤函数和sorted排序函数在处理大数据过滤和排序中非常有用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值