1. ord()、chr()、unichr()函数
所有的字符都有其对应的数字,才能被计算机处理。
ASCII和Unicode是两个不同的编码标准,ASCII编码是1个字节,而Unicode编码通常是2个字节。
对于ASCII码,65~90为从A开始的26个大写英文字母,97~122号为26个小写英文字母;48~57为字符0~9。
而这些字母的Unicode在数值上与ASCII码相同,只是前面要补一个字节的0。
ord()函数:参数为字符,返回值为该字符对应的ASCII码。eg. ord(‘A’) == 65
chr()函数:参数为ASCII码(数字0~255中的任意值, 但Python3中上限不止255了),返回值为对应的字符 eg. chr(48) == ‘0’ chr(97) == ‘a’
Python3中不再有unichr()来转换Unicode,而是将其功能直接整合进了chr()
2. enumerate()函数
语法:enumerate(sequence, start_index)
sequence是一个可遍历的对象,start_index可以省略,默认值为0,当然也可以自己指定索引值
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
eg. names = [‘Bob’, ‘Alice’, ‘Guido’]
for index, value in enumerate(names):
它的内部结构:
a = [‘arsenal’, ‘chelsea’, ‘Manchester United’]
print(list(enumerate(a)))
输出:[(0, ‘arsenal’), (1, ‘chelsea’), (2, ‘Manchester United’)]
3. zip()函数
zip() 用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。<br />可以把压缩zip()和解压zip(*)理解为:一个是允许多个参数,每个参数都是一个可迭代对象,再将每个元素配对;另一个是只有一个参数,该参数是可迭代对象,再将这个对象中的每个迭代对象的对应位置元素配对。![](https://cdn.nlark.com/yuque/0/2019/png/267778/1550552718633-985c0b39-b85a-4838-b006-8e8d62235eac-image1.png#crop=0&crop=0&crop=1&crop=1&height=992&id=FpZ8n&originHeight=992&originWidth=1945&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=1945)<br />注意:*这里本质是解压参数列表,相当于将列表元素从列表中抽出,彼此之间用逗号隔开,但不在处于列表中。所以,zip(*[a, b, c])实际上是对列表中的多个元素a、b、c进行zip操作。<br />![](https://cdn.nlark.com/yuque/0/2019/png/267778/1551768674389-b0d49b91-36fa-41e9-a681-2f062d144545.png#crop=0&crop=0&crop=1&crop=1&height=78&id=KojaG&originHeight=193&originWidth=2045&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=827)
4. map()函数
语法:map(function, iterable, …)<br /> map()函数根据参数中的函数对指定的序列做映射。第一个参数为映射函数,后面的参数为可迭代对象。其中,function可以运用事先定义好的函数,或者也可以采用lambda表达式(类似于一种匿名函数,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用)。![](https://cdn.nlark.com/yuque/0/2019/png/267778/1550552718678-97a9cd98-355b-4bb3-b1a8-a4fc194c5068-image2.png#crop=0&crop=0&crop=1&crop=1&height=506&id=XPigl&originHeight=506&originWidth=1939&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=1939)
5. isalnum()
isalnum() 方法检测字符串或字符是否由字母和数字组成。(leetcode 125)![](https://cdn.nlark.com/yuque/0/2019/png/267778/1550552718705-48976e85-676c-4fe6-9082-7960f4dab116-image3.png#crop=0&crop=0&crop=1&crop=1&height=255&id=F4UJB&originHeight=255&originWidth=2035&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=2035)
6. min() max()
返回给定参数的最小值和最大值,可以是单个的可迭代对象。![](https://cdn.nlark.com/yuque/0/2019/png/267778/1550552718725-0f4eade1-5991-4063-9b8a-aa1ca2413678-image4.png#crop=0&crop=0&crop=1&crop=1&height=310&id=DFyVI&originHeight=310&originWidth=2098&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=2098)
7. replace()函数
8. divmod()
以元组的形式,返回一个除法的商和余数(同样适用于复数除法)
9. type()和isinstance()的区别
两者都可用于判断对象的类型,它们的区别在于:
- 返回的类型不同,输入参数个数不同
- type()直接返回对象的类型
- isinstance()返回判断是否正确(bool值),有两个输入参数
- type()不会考虑对象的继承关系,即认为子类不是父类,每种类型都是独立的;而isinstance会考虑继承
10. lambda函数
lambda函数
https://bbs.huaweicloud.com/blogs/257913?utm_source=zhihu&utm_medium=bbs-ex&utm_campaign=other&utm_content=content
匿名函数,无需提前定义。可以具有任意数量的参数,但有且仅有一个表达式
语法:lambda param: expression
- param:可选参数
- expression:函数表达式
匿名函数最好在其他将函数用作参数或返回函数作为输出的其他高阶函数中使用(例如filter、map、reduce等,作为参数);当然也可直接调用
f = lambda x, y: x*y
print(f(3, 4))
filter函数
用于 过滤 可迭代对象中不符合条件的元素,返回由符合条件的元素组成的新的迭代器。filter() 函数把传入的函数依次作用于每个元素,然后根据返回值是 True 还是 False,来决定保留或丢弃该元素。
语法:filter(function,iterable)
- function — 判断函数,结果为True则保留
- iterable — 可迭代对象
- 返回值:返回一个迭代器对象(需要用list转换来得到过滤后的列表) ```python from collections import Iterable
my_list = [2,3,4,5,6,7,8,9] new_list = filter(lambda a: a%3 == 0, my_list) print(new_list) print(isinstance(new_list, Iterable)) print(list(new_list))
![image.png](https://cdn.nlark.com/yuque/0/2022/png/267778/1655123864777-a85360ea-3c24-46d3-acd3-f0026c17fad7.png#clientId=u87ea63c4-b69a-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=199&id=u1d74b170&name=image.png&originHeight=199&originWidth=648&originalType=binary&ratio=1&rotation=0&showTitle=false&size=55033&status=done&style=none&taskId=ue14de06a-e680-448b-aa87-60423a923b4&title=&width=648)
map函数<br />以参数可迭代对象中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新的可迭代对象<br />语法:map(function, iterable, …)
- function -- 映射函数
- iterable -- 一个或多个可迭代对象
- 返回值 -- 可迭代对象
```python
list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))
list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])) # 两个可迭代对象的元素,分别对应x和y
reduce函数
对可迭代对象的元素进行迭代计算:依次从iterable中取一个元素,和上一次调用function的结果做参数再次调用function;第一次调用function时,如果提供initializer参数,会以iterable中的第一个元素和initial作为参数调用function,否则会以iterable前两个元素做参数调用function。
语法:reduce(function, iterable[, initializer])
- function — 函数,带2个参数
- iterable — 可迭代对象
- initializer — 可选,初始参数
summation = reduce(lambda x, y: x+y, [1,2,3,4,5]) # 相当于 (((((1+2)+3)+4)+5) = 15