序列
序列是一种存储方式,用来存储一系列的数据,在内存中,序列就是一块用来存放多个值的连续的内存空间。常见的序列:字符串、列表、元组、字典、集合;例如:a=[10,20,30,40],a指向的是一个列表的地址对象,这个地址中值是具体这四个数字的地址,是一个轻量级的对象,4个地址值指向各自的地址。
列表:
列表的大小可变,根据需要随时增加或者缩小。
列表的创建:
1)a=[a,b,c,d....]
2) list()创建:将可迭代的数据转化成列表
a=list("abc")
3)range()创建整数列表:range[start end step]
4) 推导式:a=[x*2 for x in range[5]]
2) list()创建:将可迭代的数据转化成列表
a=list("abc")
3)range()创建整数列表:range[start end step]
4) 推导式:a=[x*2 for x in range[5]]
列表的增加:
append()方法
+运算符:大量运算符不建议使用,创建新的对象
extend():涉及两个列表的结合,推荐这个
乘法扩展:[sex,3]*3
列表的删除:
del a[1]
pop()方法,默认弹出最后一个元素
append()方法
+运算符:大量运算符不建议使用,创建新的对象
extend():涉及两个列表的结合,推荐这个
乘法扩展:[sex,3]*3
列表的删除:
del a[1]
pop()方法,默认弹出最后一个元素
remove()方法,删除首次出现的指定元素
列表元素的访问:
a[x]
index()获得指定元素在列表中首次出现的位置
count()获得指定元素在列表中出现的次数
len()获取列表的长度
in 成员资格判断
a[x]
index()获得指定元素在列表中首次出现的位置
count()获得指定元素在列表中出现的次数
len()获取列表的长度
in 成员资格判断
切片操作slice:
列表名[起始:结束:步长]
列表名[起始:结束:步长]
列表的排序:
列表名.sort(),升序排序,不生成新的对象;列表名.sort(reverse=Ture) 降序排序
random.shuffle(列表名) 打乱顺序
sorted()内置方法进行排序,但是是生成新的对象
reversed()返回迭代器,只是返回一次,逆序排序
列表名.sort(),升序排序,不生成新的对象;列表名.sort(reverse=Ture) 降序排序
random.shuffle(列表名) 打乱顺序
sorted()内置方法进行排序,但是是生成新的对象
reversed()返回迭代器,只是返回一次,逆序排序
元组
列表是可变序列,可以修改列表元素,但是元组是不可变序列。访问速度和处理比列表快
元组的创建
a=()
tuple()
元组的元素访问和计数
a=[首次:尾部:步长]
sorted(a):将元组变成列表,并排序
zip(a,b,c) 将多个列表对应位置的元素组成元组,形成一个列表,里面的元素是元组
生成器推导式:通过_next_()调用
s=(x*2 for x in range(5))
字典
键值对的无序可变序列,键是任意的不可变的数据,并且不可重复。
字典的创建
a={'name':"djw","age":10,"sex":[a,b]}
b={}
c=dict(zip(b,c))
fromkeys创建值为空的字典:a=dict.fromkeys(["name","age","money"])
字典的访问
a.get("name")
a.items()获得所有的键值对
a.keys() 获得所有的键
a.values()获得所有的值
in键是否存在
len()键值对的个数
字典元素添加、修改、删除
a[key]=values,如果有原来的键,则覆盖原来的。
a.update(b)
del(a[key])直接删除 、a.clear()、a.pop(key)
popitem()随机删除
序列解包
a={'name':'djw'; 'age':18;‘job’:'teaher'}
a,b,c=s
则a,b,c依次为key值
a,b,c=s.items()
则a,b,c依次返回键值对
a,b,c=s.values()
则a,b,c依次返回values值
任何的数据都可以用表格表示,依次一个表格可以由列表和字典构成
字典的底层原理
字典底层是散列数字,有空白项,根据需要的键值对,生成二进制码,根据算法,增加到已知的散列数组中,如果所有的散列数组都有数字,就会根据某种算法进行扩容。
同理,取出字典中的值,也是需要计算key的hash,在进行散列数组的匹配,找到一个地址后,计算该地址key的的hash和原来的进行比较,如果一致,返回相等。
1.字典在内存中开销巨大,典型的空间换时间
2.键查询速度快
3.往字典里面添加新建可能导致扩容,导致散列表中键的次序变化,因此,不要再遍历字典的同时进行字典的修改。
集合
集合是无序可变,元素不能重复,其底层是字典实现,就是字典的key集合
z={a,b.c}
set函数将列表、元素变成集合
remove()
set函数将列表、元素变成集合
remove()
clear()