bool类型
除了直接给变量赋值 True 和 False,还可以用 bool(X) 来创建变量,其中 X 可以是
基本类型:整型、浮点型、布尔型
容器类型:字符串、元组、列表、字典和集合
【例子】bool 作用在基本类型变量:X 只要不是整型 0、浮点型 0.0,bool(X) 就是 True,其余就是 False。
【例子】bool 作用在容器类型变量:X 只要不是空的变量,bool(X) 就是 True,其余就是 False。
type()
不会认为子类是一种父类类型,不考虑继承关系。isinstance()
会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()
。
print()函数
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
将对象以字符串表示的方式格式化输出到流文件对象file里。其中所有非关键字参数都按str()方式进行转换为字符串输出;
关键字参数sep是实现分隔符,比如多个参数输出时想要输出中间的分隔字符;
关键字参数end是输出结束时的字符,默认是换行符\n;
关键字参数file是定义流输出的文件,可以是标准的系统输出sys.stdout,也可以重定义为别的文件;
关键字参数flush是立即把内容输出到流文件,不作缓存。
List
- 前面三种方法(
append
,extend
,insert
)可对列表增加元素,它们没有返回值,是直接修改了原数据对象。 而将两个list相加,需要创建新的 list 对象,从而需要消耗额外的内存,特别是当 list 较大时,尽量不要使用 “+” 来添加list。
tuple
- 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用。
- 如果你只想要元组其中几个元素,用通配符「*」,英文叫 wildcard,在计算机语言中代表一个或多个元素。
t = 1, 2, 3, 4, 5
a, b, *rest, c = t
print(a, b, c) # 1 2 5
print(rest) # [3, 4]
可变类型判别
- 麻烦方法:用
id(X)
函数,对 X 进行某种操作,比较操作前后的id
,如果不一样,则X
不可变,如果一样,则X
可变。 - 便捷方法:用
hash(X)
,只要不报错,证明X
可被哈希,即不可变,反过来不可被哈希,即可变。
迭代器
迭代器是一种对象,它实现了 iter() 和 next() 方法。iter() 方法返回迭代器自身,而 next() 方法用于返回容器中的下一个元素。迭代器可以逐个地访问容器中的元素,通过调用 next() 函数来获取下一个值,直到遍历完所有元素,此时会抛出 StopIteration 异常。一个迭代器对象只能被迭代一次
可迭代对象
在Python中,可迭代对象(iterable)是指实现了__iter__()方法的对象,或者说具有返回迭代器的能力。可迭代对象是一种容器,它可以包含多个元素,并且可以通过迭代的方式逐个访问这些元素。
可迭代对象可以用于创建迭代器,也可以直接使用for循环进行遍历。当我们使用for循环遍历一个可迭代对象时,Python会自动调用可迭代对象的__iter__()方法,获取对应的迭代器,然后使用迭代器来逐个获取元素。
可迭代对象指的是实现了 iter() 方法的对象,而迭代器是在实现 iter() 方法的基础上又实现了 next() 方法的对象
生成器
在Python中,生成器(Generator)是一种特殊的迭代器,它可以按需生成数据,而不是一次性生成所有数据。可以大大减少内存占用。因此,生成器常用于处理大量数据、无限序列或需要逐个产生结果的情况。
- 生成器函数(Generator Functions):这是使用
yield
关键字定义的函数。它在执行过程中可以暂停并返回一个值,然后再次从暂停的位置恢复执行。生成器函数可以使用yield
产生多个值,每次迭代时返回一个值。 - 生成器表达式(Generator Expressions):这是一种使用类似于列表推导式的语法创建生成器的方式。它提供了一种简洁的方法来生成数据序列。
- 生成器对象(Generator Objects):生成器对象是通过调用生成器函数或使用生成器表达式而创建的对象。生成器对象实际上就是一种特殊类型的迭代器,可以使用
next()
函数逐个获取生成的值。