一、dict and set
dict字典:根据key的值来找value的存放位置(哈希函数),所以key的值是不可变类型。
set集合:输入为一个list,但是会自动筛去重复的值,类似于将dict字典格式数据里的key存放起来。set也不可以存放可变对象。
不可变对象:不可变对象的类似replace()方法,本质上是变量指向的内容发生了变化,对象本身并没有变化。
tuple可以放在set、dict格式里边
二、生成器
通过列表生成器可以直接创建一个列表,但是受内存限制,生成器的存在就是只将列表生成方式赋给一个变量,而不是直接生成,解决内存问题。
遇到return就会结束,不会输出return语句,要想输出必须捕获stopIteration错误。
生成器可以进行迭代(for in)输出
示例:杨辉三角生成器代码
def yanghuisanjiao():
y = [1]
while True:
yield y
y = [1] + [y[i]+y[i+1] for i in range(len(y)-1)] + [1]
#重新赋值
if __name__ == '__main__':
n = 0
for i in yanghuisanjiao():
print(i)
n = n +1
if n == 2:
break
三、迭代器
可迭代对象(Iterator)表示的是一个数据流,它可以被next()函数调用得到下一个数据,可以将Iterator看成一个有序序列,但是我们并不能提前知道序列长度,只有需要数据的时候才会计算。