Python 解释器内置了许多函数和类型,常用的列表如下:
菜鸟教程内建函数
- | - | 内建函数表 | - | - |
---|---|---|---|---|
★isinstance() | ★issubclass() | ★sum() | ★sorted() | memoryview() |
★enumerate() | ★reversed() | ★zip() | help() | min() |
★any() | ★all() | hex() | next() | slice() |
ascii() | divmod() | id() | object() | dir() |
bin() | round() | input() | oct() | staticmethod() |
bool() | eval() | int() | open() | str() |
breakpoint() | exec() | delattr() | ord() | set() |
bytearray() | filter() | hash() | pow() | super() |
bytes() | float() | iter() | print() | tuple() |
callable() | format() | len() | property() | type() |
chr() | frozenset() | list() | range() | vars() |
classmethod() | getattr() | locals() | repr() | dict() |
compile() | globals() | map() | abs() | import() |
complex() | hasattr() | max() |
内建函数众多,这里讨论几个比较重要的(带★ 的),其他的需要了解的推荐参考Python的菜鸟教程,里面有详细的讲解.
● isinstance(obj, class_or_tuple)
判断对象obj是否属于某种类型或者元组中列出的某个类型
isinstance(True, int)# 这里的是object,可以是任何一个对象,True只是等效为数字一,所以是在int里.也可以输入 十进制数字,字符串,列表等等,对应的后面也要更改.
>>>True
● issubclass(class, class_or_tuple)
判断类型cls是否是某种类型的子类或元组中列出的某个类型的子类
issubclass(bool, int) #函数的class表示必须是classs的参数,如 int bool str
>>>True
● sum(iterable[, start])
从 start 开始,从左到右对 iterable 中的元素求和。 start 默认是 0,迭代的 item 通常是数字,并且不允许 start 的值为字符串。
对于有些情况,有比 sum() 更好的选择,
比如:连接字符串应该用 ‘’.join(sequence)。
浮点数求和用 math.fsum() 。
要连接一系列 iterable,请考虑使用 itertools.chain()。
sum 可以对迭代对象求和,或者加上求和的初始值
sum (iterable,start)
sum(range(10),10)
>>>55
● sorted(iterable[, key][, reverse])
从 iterable 中的 item 中返回一个新的排序列表。
有两个可选参数,必须将其指定为关键字参数。
key 指定一个带有一个参数的函数,用于从每个列表元素中提取比较键:key=str.lower。默认值是 None(直接比较元素)。
reverse 是一个布尔值。如果设置为 True,那么列表元素按照每个比较被颠倒的s顺序进行排序。
内置的 sorted() 函数排序是稳定的。如果确保不会更改比较相等的元素的相对顺序,则排序是稳定的 。
举例:
sorted([1, 3, 5])
sorted([1, 3, 5,'6'], key=int,reverse=True) #字符串先转化成int格式进行排序
sorted({
'c':1, 'b':2, 'a':1}) # 默认按照字典的key进行排序
注意与列表的sort比较
ls=[1,2,'3']
ls.sort(key=int,reverse =True) #直接用sort将报错,因为内部格式不一致
>>>['3',2,1]#将字符串先转化成int格式进行排序
● reversed(seq)
返回一个反向迭代器。seq 必须是具有 reversed() 方法或支持序列协议( len() 方法和整数参数从 0 开始的 getitem() 方法)的对象。
返回迭代器,每需要一个元素就返回一个元素
list(reversed("13579"))
{
reversed((2, 4)) } # 有几个元素?
for x in reversed(['c','b','a']):
print(x)
reversed(sorted({
1, 5, 9}))
reversed(set(range(10)))# set是无序结构,所以不能反转.
● enumerate(iterable, start=0)
返回一个枚举对象。 iterable 必须是一个序列,一个迭代器或其他支持迭代的对象。由 enumerate() 返回的迭代器的 next() 方法返回一个元组,该元组包含一个计数(从 start 开始,默认值为 0)以及遍历迭代获得的值。
for x in enumerate([2,4,6,8]):
print(x)
(0, 2)
(1, 4)
(2, 6)
(3, 8)
## 返回一个有起始值的计数元组
● iter(iterable)
迭代器和取元素iter(iterable)、next(iterator[, default])
iter将一个可迭代对象封装成一个迭代器
next对一个迭代器取下一个元素。如果全部元素都取过了,再次next会抛StopIteration异常
it = iter(range(5))
next(it)
it = reversed([1,3,5])
next(it)
● 能够通过迭代一次次返回不同的元素的对象。
所谓相同,不是指值是否相同,而是元素在容器中是否是同一个,例如列表中值可以重复的,[‘a’, ‘a’],虽然这个列表有2个元素,值一样,但是两个’a’是不同的元素,因为有不同的索引
● 可以迭代,但是未必有序,未必可索引
● 可迭代对象有:list、tuple、string、bytes、bytearray、range对象、set、dict、生成器、迭代器等
● 可以使用成员操作符in、not in,in本质上对于线性结构就是在遍历对象,非线性结构求hash
● 特殊的对象,一定是可迭代对象,具备可迭代对象的特征
● 通过iter方法把一个可迭代对象封装成迭代器
● 通过next方法,迭代迭代器对象
● 生成器对象,就是迭代器对象
● zip(*iterables)
制作一个迭代器,用于聚合来自每个迭代器的元素。
返回元组的迭代器,其中第 i 个元组包含来自每个参数序列或迭代的第 i 个元素。当最短的输入迭代耗尽时,迭代器停止。使用单个迭代参数,它将返回 1 元组的迭代器。没有参数,它返回一个空的迭代器。
举例:
list(zip(range(10),range(10)))# 返回的列表里都是含两个元素的元组
list(zip(range(10),range(10),range(5),range(10)))# 列表里含4个元素的元组
dict(zip(range(10),range(10)))# 构建字典
{
str(x):y for x,y in zip(range(10),range(10))}# 构建字典
与 * 操作符一起使用 zip() 可用于解构列表:
>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]
>>> x2, y2 = zip(*zip(x, y))
>>> x == list(x2) and y == list(y2)
● all & any
all()
#任何元素都等效等于True,空的可迭代对象返回True
any()
#其中任一元素等效于True,空的可迭代对象返回False
举例:
lst = [True, {
1}, [2, 3], 5.1, 'abc']
print(all(lst), any(lst))
print(all([]), any([]))
print(all(lst + [0]), any(lst + [0]))