重要内置函数
1.map() 映射
可以结和匿名函数一起用
l1 = [12,21,26,31,40]
res = map(lambda x:x+6, l1) # map 相当于for 循环l1列表 把列表里的数据传给x(相当于形参) 接着 x+6后的数据值 生产一个新的列表
print(list(res))
# [18, 27, 32, 37, 46]
-------------------------------------------------------------------------------------
2. max()\min() 最大值 最小值
也可以结和匿名函数一起用
字典
d1 = {'jack': 10000,
'tank': 88888,
'tony': 123
}
res = max(d1, key=lambda k: d1.get(k))
# max 也相当于for循环在d1字典里循环获取,但是for循环在字典只能获取键。 k 相当于形参, get(k)在d1按k key(键)列表里取值。
"""注意如果我们不按k取值那么他取出来的就是键, 在键里都是一些英文字母,怎么做比对呢。我们在学习字符编码的时候学过字母和数字的对应关系,按照字母对应的数字来作比较取最大值"""
print(res)
列表
l1 = [12,21,26,31,40]
res = max(l1) # 40
字符编码:
字母和数字对应关系
A-Z 65 - 90
a-z 87 - 122
-------------------------------------------------------------------------------------
3. reduce 传多个值只返回一个值
from functools import reduce
l1 = [12,21,26,31,40]
res = reduce(lambda a,b:a + b, l1)
print(res)
reduce相当于for循环在列表l1里取数据值 赋值给 a和b 。a + b 相当于实现部分 。返回一个总和。 也可以在最后面指定一个数字等于加上该数字>>>取决于 实现部分的数学运算符
重要内置函数补充
zip 拉链
可以把两个列表的数据按照索引位的顺序合在一起,可以有多个列表,如果数量不一则会以索引位最短的位准后面的数据丢掉不要
代码:
l1 = [11, 22, 33, 44, 55]
l2 = ['是我','是你','是他','是狗']
res = zip(l1, l2)
print(list(res))
# [(11, '是我'), (22, '是你'), (33, '是他'), (44, '是狗')]
----------------------------------------------
filter 过滤
可以根据我们固定的条件过滤出我们想要的数据,这里又要用到无名函数lambda了。 语法 lambda 形参:返回值
l1 = [11, 22, 33, 44, 55]
res = filter(lambda x: x > 22, l1)
print(list(res))
# [33, 44, 55]
----------------------------------------------
sorted
可以给数据集排序。默认升序
l1 = [31, 21, 133, 14, 55]
res = sorted(l1)
print(res)
# [14, 21, 31, 55, 133]
常见内置函数
abs() 绝对值
print(abs(-55)) # 55
print(abs(41)) # 41
只取数据值 自测只能取整型和浮点型。只能用在+ 或者 - 别的数学符号报错
----------------------------------------------
all()
所有数据值为True才会返回True , 如果里面有一个Flase 就返回Flase
print(all([1, 2, 3, 4, 5, '哈哈'])) True
print(all([0, None, '', True])) False
----------------------------------------------
any() 和上面的有一点区别,所有数据值对应的布尔值如果有一个为True 就返回True
----------------------------------------------
bytes() 二进制模式
可以把数据转换成bytes类型
name = 'ikun天下无敌'
print(bytes(name, 'utf8'))
注意 要填写模式('utf8')
# b'ikun\xe5\xa4\xa9\xe4\xb8\x8b\xe6\x97\xa0\xe6\x95\x8c'
----------------------------------------------
bin() 其他类型转二进制
oct() 其他类型转八进制
hex() 其他类型转十六进制
int() 其他数据类型转十进制
----------------------------------------------
callable() 判断变量名是否可以加括号调用。 应该是判断该变量名是否是函数把
name = 'ikun天下无敌'
def foo():
print('你们等着收律师函吧')
print(callable(name)) False
print(callable(foo)) True
----------------------------------------------
chr() 把数值转换成对应的ASCII码对应的字母
ord() 把字母转成对应的ASCII码对应的数字
print(chr(121)) y
print(ord('s')) 115
这里又用到了一个记忆点
A-Z 65-90
a-z 97-122
----------------------------------------------
dir() 可以查看 该数据值能用的内置方法
print(dir('鸡你太美'))
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
----------------------------------------------
divmod()
"""
可以使用在网站的分页制作上
总共250条数据 每页展示25条 需要多少页 10页
总共300条数据 每页展示25条 需要多少页 12页
总共234条数据 每页展示25条 需要多少页 9页
"""
print(divmod(250,25)) #(10, 0) 第一个参数是整数, 第二个参数时余数部分
print(divmod(300,25)) # (10, 0)
print(divmod(234,25)) # (9, 9)
def foo(a1,a2):
b1,b2 = divmod(a1,a2) #解压赋值 把传参的数据整除后的数据值(9, 9)绑给 b1 b2
if b2: # 当b2为True时走下一步
b1 += 1 # b1 + 1
print(f'需要{b1}页')
foo(234, 25)
----------------------------------------------
enumerate() 枚举
可以用在字典生成式上,可以从0开始生成序列 按照k.v来生成字典
用法 变量名接收 = {k:v for循环 k,v in enumerate目标数据集}
name = ['ikun天下无敌', '练习时长两年半', '鸡你太美']
d1 = {k:v for k,v in enumerate(name)}
print(d1)
{0: 'ikun天下无敌', 1: '练习时长两年半', 2: '鸡你太美'}
----------------------------------------------
eval() exec() 识别字符串中的 python代码并执行
我们只需要记 exec()
eval 只能识别简单的python代码
name = ['ikun天下无敌', '练习时长两年半', '鸡你太美']
a1 = 'for i in name:print(i)'
exec(a1)
ikun天下无敌
练习时长两年半
鸡你太美
----------------------------------------------
hash() 哈希加密 可以把字符串转成一串你看不懂的数字
name = 'ikun天下无敌', '练习时长两年半', '鸡你太美'
print(hash(name)) # 7115456694036604866
---------------------------------------------
id()查看内存地址
input() 获取用户输入
isinstance(目标数据, 数据类型) 判断数据类型
map() 映射
max\min 最大最小值
open 打开文件
---------------------------------------------
pow() 幂指数 次方
print(pow(4, 2)) 16
print(pow(4, 3)) 64
print(pow(4, 5)) 1024
---------------------------------------------
sum() 求和
print(sum([11, 25, 7756, 5345, 7567, 867]))
21571
---------------------------------------------
zip() 拉链