day 16 - 1 内置函数(二)
内置函数(二)
reversed() 返回一个反向的迭代器
k = [1,2,3,4,5]
k.reverse() #反转
print(k) k = [1,2,3,4,5]
k2 = reversed(k) #反向的迭代器
print(k2)
for i in k2:
print(i)
#返回结果 反序的迭代器 <list_reverseiterator object at 0x0000000000B8FBA8>
#保留原列表,返回一个反向的迭代器
slice() 切片(函数,不怎么用)
l = (1,2,23,213,5612,342,43)
sli = slice(1,5,2)
print(l[sli])
print(l[1:5:2])
format() 格式化输出,它有很多功能
print(format('test', '<20')) #左对齐
print(format('test', '>40')) #右对齐
print(format('test', '^40')) #居中
bytes() 转换为 bytes 类型
# 我拿到的是gbk编码的,我想转成utf-8编码
print(bytes('你好',encoding='GBK')) # unicode 转换成GBK的 bytes
print(bytes('你好',encoding='GBK').decode('GBK')) #二进制又转为 GBK
print(bytes('你好',encoding='utf-8')) # unicode 转换成 utf-8 的 bytes
#bytes 用途
# 网络编程 只能传二进制
# 照片和视频也是以二进制存储
# html网页爬取到的也是编码
bytearray() 是一个 byte 类型的数组
b_array = bytearray('你好',encoding='utf-8')
print(b_array) #'\xe4\xbd\xa0\xe5\xa5\xbd'
print(b_array[0]) #
ord() 字符按照 unicode 转数字
print(ord('好'))
print(ord(''))
chr() 数字按照 unicode 转字符
print(chr(97))
ascii() 只要是 ascii 码中的内容 就打印出来,不是就转换成 \u
print(ascii('好'))
print(ascii(''))
repr() 用于百分号格式化输出
name = 'egg'
print('你好%r'%name)
print(repr('')) #是什么就打印什么
print(repr(1))
all() 判断是否有 bool 值为 False 的值
返回的值有有任意一个 False 整体就为 False
print(all(['a','',123]))
print(all(['a',123]))
print(all([0,123]))
any() 判断是否有 bool 值为 True 的值
返回的值有有任意一个 True 整体就为 True
print(any(['',True,0,[]]))
很重要的四个内置函数 zip filter map sorted
zip() 拉链方法 返回的是一个迭代器
木桶短板原则来拉链
l = [1,2,3,4,5]
l2 = ['a','b','c','d']
l3 = ('*','**',[1,2])
d = {'k1':1,'k2':2}
for i in zip(l,l2,l3,d):
print(i)
filter() 过滤
filter() 函数接收一个函数 f 和一个 list,这个函数 f 的作用是对每个元素进行判断,返回 True 或 False,filter() 根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新 list
def is_odd(x):
return x % 2 == 1
#返回奇数
ret = filter(is_odd,[1,2,3,4,5,6,7,8,9]) #像如下的列表推导式
[i for i in [1,2,3,4,5,6,7,8,9] if x % 2 == 1] print(ret) #可见这里返回的是一个迭代器 for i in ret:
print(i) #返回字符串
def is_str(x):
return type(x) == str ret = filter(is_str,[1, 'hello',[],'',None,6,7,'world',12,17]) #''也属于字符串 for i in ret:
print(i)
#利用filter(),可以完成很多有用的功能 例如:删除 None 或者空字符串(不考虑 0 的问题)
def is_not_empty(s):
return s and len(str(s).strip()) > 0
return s and str(s).strip()
ret = filter(is_not_empty,[1,'hello',[],'',None,6,7,'world',12,17]) for i in ret:
print(i) #请利用filter()过滤出1~100中平方根是整数的数,即结果应该是:
#[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
from math import sqrt #开平方
def sqrts(s):
ret = sqrt(s)
return ret % 1 == 0 #除以一余零为整数
ret = filter(sqrts,range(1,101))
for i in ret:
print(i)
map 函数应用于每一个可迭代的项,返回的是一个结果 list。如果有其他的可迭代参数传进来,map 函数则会把每一个参数都以相应的处理函数进行迭代处理。map() 函数接收两个参数,一个是函数,一个是序列,map 将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回
ret = map(abs,[1,-4,6,-8])
print(ret)
for i in ret:
print(i)
filter 执行了 filter 之后的结果集合 <= 执行之前的个数
filter 只管筛选,不会改变原来的值
map 执行前后元素个数不变
值可能发生改变
sorted() 排序
sorted 使用场景:列表数据不大,且还要保留原有列表顺序的时候
因为 sorted 排序不改变原有列表 所以在内存空间就会有两个列表 k = [1,-4,6,5,-10] #从小到大进行排序
k.sort(key = abs) #sort 在原列表的基础上进行排序
print(k) # reverse=True 从大到小排序 reverse=False 从小到大排序(默认)
print(sorted(k,key=abs,reverse=True)) #sorted 生成了一个新列表 不改变原列表 占内存
print(k) ##根据列表中每一个元素的长度进行排序
h = [' ',[1,2],'hello world']
print(sorted(h,key=len))
匿名函数
带有 key 的五个函数,都可以和 lambda 函数组合
min max filter map sorted —— lambda
def add(x,y):
return x+y
print(add(10,20)) #匿名函数组成部分(不允许换行)
#函数名 = 匿名函数关键字 参,数 : 返回值(函数名是匿名函数赋值后才有的)
add = lambda x,y:x+y
print(add(1,2)) #直接后面传递实参
(lambda x,y: x if x> y else y)(101,102) #上面是匿名函数的函数用法。除此之外,匿名函数也不是浪得虚名,它真的可以匿名。在和其他功能函数合作的时候
取出字典中 value 最大值对应的 key 值
#用普通函数的写法
dic={'k1':10,'k2':100,'k3':30}
def func(key):
return dic[key]
print(max(dic,key=func)) #根据返回值判断最大值,返回值最大的那个参数是结果 #匿名函数的写法 一行搞定
print(max(dic,key=lambda k:dic[k]))
day 16 - 1 内置函数(二)的更多相关文章
- python---day14( 内置函数二)
内置函数二一:匿名函数 lambda函数 lambda 表示匿名函数,不需要用def 来申明. 语法: 函数名=lambda 参数:返回值 ----〉 案例:f=lambda n:n*n 例子01: ...
- python函数知识六 内置函数二、匿名函数与内置函数三(重要)
19.内置函数二 abs():绝对值 lst = [1,2,-3,1,2,-5] print([abs(i) for i in lst]) enumerate("可迭代对象",&q ...
- day 16 - 2 内置函数(二)练习
内置函数(二)练习 1.用 map 来处理字符串列表,把列表中所有人都变成 sb,比方 alex_sbname=['alex','wupeiqi','yuanhao','nezha'] name=[' ...
- python 内置函数(二) 进阶函数 递归内容及二分法查找 知识点
1,lambda: 匿名函数 2.sorgted() 排序函数 3,filter() 过滤函数 筛选 4,map() 映射函数 5.递归 6.二分法 一. 匿名函数: lambda lamb ...
- Python入门-内置函数二
看到标题你也能猜到今天要说大概内容是什么了,没错,昨天没有说完的部分再给大家说说(有一些重合的部分),内置函数的内容比较多,并且工作中经常用到的却不太多,很多都是不太常用的,所以我就着重说一些比较常用 ...
- 内置函数二: map sorted filter
-----------生活里没有奇迹,大部分的时候奇迹是你自己创造的. # -------------------------------------------------------------- ...
- day16:内置函数二
1,大作业,yield 返回之后可以对数据进行处理了就,注意函数的解耦,每一个小功能写成一个函数,增强可读性,写之前自己要先把整体功能分块,先做什么,在做什么 # 现在需要对这个员工信息文件进行增删改 ...
- Python内置函数二 (递归函数,匿名函数,二分法)
匿名函数 lambda() 语法: lambad 参数 : 返回值 def func(a,b): return a * b print(func(2,5)) a = lambda a ,b : a* ...
- 百万年薪python之路 -- 内置函数二 -- 最常用的内置函数
1.内置函数 1.1 匿名函数 匿名函数,顾名思义就是没有名字的函数(其实是有名字的,就叫lambda),那么什么函数没有名字呢?这个就是我们以后面试或者工作中经常用匿名函数 lambda,也叫一句话 ...
随机推荐
- P1546 最短网络 Agri-Net题解(克鲁斯卡尔)
P1546 最短网络 Agri-Net 那么这个题是一道最小生成树的板子题 在此讲解kruskal克鲁斯卡尔方法: 原理: 并查集在这里被用到: 众所周知:树满足这样一个定理:如果 图 中有n个节点并 ...
- 山东省网络安全技能大赛 部分writeup
web1 提示:ip不在范围内 直接抓包加client-ip: 127.0.0.1 即可得到flag web2 <?php include 'here.php'; $key = 'kela ...
- node+mysql 数据库连接池
1. 什么是数据库连接池? 数据库连接池是程序启动时建立足够的数据库连接,并将这些连接组成一个池,由程序动态地对池中的连接进行申请,使用和释放. 2. 使用数据库连接池原理及优点是什么? 数据库连接池 ...
- 使用exec和sp_executesql动态执行SQL语句(转载)
当需要根据外部输入的参数来决定要执行的SQL语句时,常常需要动态来构造SQL查询语句,个人觉得用得比较多的地方就是分页存储过程和执行搜索查询的SQL语句.一个比较通用的分页存储过程,可能需要传入表名, ...
- MariaDB第四章:视图,事务,索引,外键--小白博客
视图 对于复杂的查询,在多个地方被使用,如果需求发生了改变,需要更改sql语句,则需要在多个地方进行修改,维护起来非常麻烦 假如因为某种需求,需要将user拆房表usera和表userb,该两张表的结 ...
- mybatis 使用事务处理
mybatis默认开启事务 以前使用JDBC的时候,如果要开启事务,我们需要调用conn.setAutoCommit(false)方法来关闭自动提交,之后才能进行事务操作,否则每一次对数据库的操作都会 ...
- BEX5下集成FullCalendar
实现版本 BEX5 3.6 集成前准备: 直接网上查找FullCalendar获得插件文件 fullcalendar.min.css fullcalendar.min.js fullcalendar. ...
- JarvisOJ Misc webshell分析
分析压缩包中的数据包文件并获取flag.flag为32位大写md5. 神仙们还是强啊,webshell主要看http流,再过滤只剩下post请求 可以使用 http.request.method == ...
- kubeadm的安装步骤(HA)
准备3台主节点:km1/km2/km3 1.编辑kubeadm-config.yaml apiVersion: kubeadm.k8s.io/v1beta1 kind: ClusterConfigur ...
- P1494 [国家集训队]小Z的袜子
题目 P1494 [国家集训队]小Z的袜子 解析 在区间\([l,r]\)内, 任选两只袜子,有 \[r-l+1\choose2\] \[=\frac{(r-l+1)!}{2!(r-l-1)!}\] ...