python基础(四)------filter和sorted函数实现自定义排序

一、filter函数

filter(func, iterable),根据func返回值为True或False讲列表中的符合
要求的元素筛选出来
例1:
def is_even(num):
    return num % 2 == 0


a = filter(is_even, [1, 2, 3, 4, 5, 6, 7, 8])
print(list(a))

# lambda表达式写法
f = list(filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5, 6, 7, 8]))
print(f)

例2:

# 把一个序列中的空字符串去掉
#python空字符串为False, 非空字符串为True
def del_empty(s):
    print(s and s.strip())
    return s and s.strip()
s = list(filter(del_empty, ['abc', 'a      ', None]))
print(s)

# lambda表达式简便写法
print(list(filter(lambda x: x and x.strip(), 
				  ['a', '     ', 'a   ', None])))

二、sorted函数

sorted()默认升序排序
例1:

s = sorted([36, -2, -12, 24, 2, 1, 33])
print(s)

例2:

#按绝对值排序----key:排序依据
s = sorted([36, -2, -12, 24, 2, 1, 33], key=abs)
print(s)

例3:

#按绝对值反向排序,两个参数key:排序依据,reverse为True时,为降序
s = sorted([36, -2, -12, 24, 2, 1, 33], key=abs, reverse=True)
print(s)

例4:

#按照分数从低到高排序,自定义排序
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
s = sorted(L, key=(lambda x: x[1]))
print(s)

你可能感兴趣的:(Python)