使用说明:本内容无代码示例图,需要各位看官大人自行运行,自行体会
filter
- 功能:用于过滤序列
- 把传入的参数依次作用于序列的每一个元素,根据返回的是 True 或者 False 决定是否保留该元素
例 1 :去掉奇数
# 去掉奇数
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def fun(num):
if num % 2 == 0:
return True
return False
new_list = filter(fun, list1)
print(list(new_list))
例 2 :
# 去掉不想要的数据
data = [['姓名', '年龄', '爱好'], ['tom', 'man', 'basketball'], ['cat', '18', '无']]
def fun1(x):
x = str(x)
if x == '无':
return False
return True
for line in data:
# print('数据内容', line)
m = filter(fun1, line)
print(list(m))
sorted 排序
- 默认是升序排序,自己也可以修改排序的依据
- sorted 排序使用较广,难度不高,建议及时掌握
list1 = [4,7,2,6,3]
# 默认升序排序
list2 = sorted(list1)
print(list1)
print(list2) # [2, 3, 4, 6, 7]
# 按绝对值大小排序
list3 = [-7,-4,1,10]
list4 = sorted(list3,key=abs)
print(list3)
print(list4) # [1, -4, -7, 10]
# 降序 False 升序 True 降序
list5 = sorted(list1,reverse=True)
print(list5)
# 给字母排序
list6 = ['a','x','q','z']
list7 = sorted(list6)
print(list7)
# 根据字符的长度排序
list8 = ['abc','xy','qwert','zzzzzzz']
list9 = sorted(list8,key=len)
print(list9)
# key也可以传自己定义好的方法
map 与 reduce
- 难度较高
Map(映射)"和"Reduce(归约) map(fn,1sd) 参数1是函数 参数2是序列 功能:将传入的函数依次作用在序列中每一个元素,并把结果作为新的iterator返回reduce(fnc1,1sd) 参数1为函数 参数2为列表 功能:一个函数作用在序列上,这个函数必须接受两个参数 reduce把结果继续和序列的下一个元素累计运算 reduce(f,[a,b,c,d]) f(f(f(a,b),c),d)
- map 的使用
from functools import reduce
def chr2int(char):
return {'1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '0': 0}[char]
list1 = ['2', '1', '6', '5']
res = map(chr2int, list1)
print(list(res))
- reduce 的使用
# 求一个序列的和
list2 = [1, 2, 3, 4, 5]
def mySum(x, y):
return x + y
r = reduce(mySum, list2)
print(r)
扫描二维码关注公众号,回复:
10623615 查看本文章
- map 与 reduce 结合使用
# 给定字符转为整数(不用int方法)
def str2int(str1):
def fc(x, y):
return x * 10 + y
def fs(char):
return {'1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '0': 0}[char]
return reduce(fc, map(fs, list(str1)))
a = str2int('12345')
print(a)
print(type(a))