Python with 工作原理、装饰器、回收机制、内存管理机制、拷贝、作用域等(17)


基于索引的迭代取值 , 所有迭代的状态都保存在了索引中 , 而基于迭代器实现迭代的方式不再需要索引 , 所有迭代的状态就保存在迭代器中 , 然而这种处理方式优点与缺点并存:
1、优点:为序列和非序列类型提供了一种统一的迭代取值方式 。
2、优点:惰性计算:迭代器对象表示的是一个数据流 , 可以只在需要时才去调用next来计算出一个值 , 就迭代器本身来说 , 同一时刻在内存中只有一个值 , 因而可以存放无限大的数据流 , 而对于其他容器类型 , 如列表 , 需要把所有的元素都存放于内存中 , 受内存大小的限制 , 可以存放的值的个数是有限的 。
3、缺点:除非取尽 , 否则无法获取迭代器的长度
4、缺点:只能取下一个值 , 不能回到开始 , 更像是‘一次性的’ , 迭代器产生后的唯一目标就是重复执行next方法直到值取尽 , 否则就会停留在某个位置 , 等待下一次调用next;若是要再次迭代同个对象 , 你只能重新调用iter方法去创建一个新的迭代器对象 , 如果有两个或者多个循环使用同一个迭代器 , 必然只会有一个循环能取到值 。
13、list列表类型
List是中的基本数据结构之一 , 和Java中的有些类似 , 支持动态的元素的增加 。list还支持不同类型的元素在一个列表中 , List is an。
一 , 创建列表 只要把逗号分隔的不同的数据项使用方括号([])括起来即可下标(角标 , 索引)从0开始 , 最后一个元素的下标可以写-1
list = ['1' , ‘2 , ‘3’]list= [] 空列表
二 , 添加新的元素
list.append()# 在list末尾增加一个元素list.insert(n,'4')# 在指定位置添加元素 , 如果指定的下标不存在 , 那么就是在末尾添加list1.extend(list2)# 合并两个list list2中仍有元素
三 , 查看列表中的值
print(list[n]) # 使用下标索引来访问列表中的值 , 同样你也可以使用方括号的形式截取字符print(list.count(xx))# 查看某个元素在这个列表里的个数 , 如果改元素不存在 , 那么返回0print(list.index(xx))# 找到这个元素的小标 , 如果有多个 , 返回第一个 , 如果找一个不存在的元素会报错
四 , 删除list中的元素
list.pop()# 删最后一个元素list.pop(n)# 指定下标 , 删除指定的元素 , 如果删除一个不存在的元素会报错list.remove(xx)# 删除list里面的一个元素 , 有多个相同的元素 , 删除第一个print(list.pop())# 有返回值print(list.remove())# 无返回值del list[n] # 删除指定下标对应的元素del list # 删除整个列表 ,  list删除后无法访问
五 , 排序和反转
list.reverse()# 将列表反转list.sort()# 排序 , 默认升序list.sort(reverse=True)# 降序排列
注:list中有字符串 , 数字时不能排序 , 排序针对同类型
六 , 列表操作的函数
len(list)# 列表元素个数max(list)# 返回列表元素最大值min(list)# 返回列表元素最小值list(seq)# 将元组转换为列表