5-1 python中的序列分类
序列类型的分类: 1.容器序列:list,tuple,deque(容器可以放任意类型的数据)
my_list=[]
my_list.append(1)
my_list.append("a")
2.扁平序列:str,bytes,bytearray,arry.arry 3.可变序列:list,deque,bytearry,array 4.不可变:str,tuple,bytes
5-2 python中序列类型的abc继承关系
from collections import abc
Sequence MutableSequence
5-3 序列的+,+=和extend方法区别
a =[1,2]
c=a+[3,4]
print(c)
#就地加
a+=[3,4]
a+=(3,4)
a.extend(range(3))
a.append([1,2])
print(a)
5-4 实现可切片的对象
import numbers
class Group:
def __init__(self,group_name,company_name,staffs)
self.group_name=name
self.company_name=company_name
self.staffs=staffs
def __reversed__(self):
pass
def __getitem__(self,item):
cls=type(self)
if isinstance(item,slice):
return cls(group_name=self.group_name,company_name=self.company_name,staffs=self.staffs[item])
elif isinstance(item,numbers.Integral):
return cls(group_name=self.group_name,company_name=self.company_name,staffs=[self.staffs[item]])
def __len__(self):
pass
def __iter__(self):
pass
def __contains__(self,item):
pass
staffs=["bobbay1","imooc","bobby2","bobby3"]
group=Group(company_name="imooc",group_name="user",staffs=[""])
sub_group=group[:2]
sub_group=group[0]
queryset
5-5 bisect维护已排序序列
import bisect
#用来处理已排序的序列,用来维持已排序的序列,升序
#二分查找
inter_list=[]
bisect.insort(inter_list,3)
bisect.insort(inter_list,2)
bisect.insort(inter_list,5)
bisect.insort(inter_list,1)
bisect.insort(inter_list,6)
print(inter_list)
print(bisect.bisect_left(inter_list,3))
#学习成绩
90-100 A
80-90 B
["ABCDE"]
print(inter_list)
5-6 什么时候我们不该使用列表
#array,deque
#数组
import array
#array和list的一个重要的区别,array只能存放指定的数据类型
my_array=array.array("i")
my_array.append(1)
my_array.append("abc")
5-7 列表推导式、生成器表达式、字典推导式
#列表生成式
#提取1——20之间的奇数
odd_list=[]
for i in range(21):
if i %2=1:
odd_list.append(i)
odd_list=[i for i in range(21) if i%2 == 1]
print(type(odd_list))
#逻辑复杂的情况
def hadle_item(item):
return item*item
odd_list=[hadle_item(i) for i in range(21) if i%2 == 1]
#列表生成式性能高于列表操作
print(type(odd_list)
#生成式表达式
odd_gen=(i for i in range(21) if i%2 == 1)
print(type(odd_list))
odd_list=list(odd_gen)
print(type(odd_list))
print(odd_list)
#字典推导式
my_dict = {"bobby1":22,"bobby2":23,"imooc":5}
reversed_dict={value:key for key,value in my_dict.items()}
pritn(reversed_dict)
#集合推导式
# my_set = set(my_dict.keys())
my_set={key for key,value in my_dict.items()}
print(type(my_set))
print(my_set)
5-8 本章小结
总结:自定义序列类型,python的协议,序列的abc关系,满足序列就可以切片,序列的+ 和+=和extended的关系bisect管理可排序的序列,列表推导式,生成器表达式,字典推导式.