序列
python中,序列是一种数据存储方式。
序列的结构:
字符串、列表、元组、字典、集合
序列中存储的是整数对象的地址,而不是整数对象的值。
列表
列表中的元素可以是不相同的,可以是任意类型的。
列表大小可变。
创建
- 基本语法[]
- list()
- list(range(int))
- 推导式
例:a = [x*2 for in range(100) if x%9==0]
添加
- append()
原地创建,列表尾部添加新的元素,速度最快。 - extend()
原地创建,推荐多个元素使用 - insert(位置,元素)
指定位置,插入元素影响后面元素的移动。 - +
产生新的对象。 - 乘法扩展
通过乘法,使列表多次重复。
删除
- del()
删除指定位置的元素。 - pop(位置)
删除并返回指定位置元素,未指定位置默默人操作最后一个元素。 - remove()
删除首次出现的元素,若元素不存在,该元素抛出异常。
访问
-
index()
获得指定元素在列表中首次出现的索引 -
count()
返回指定元素在列表中出现的次数 -
len()
返回列表长度 -
in
成员资格判断
排序
-
sort()
修改源列表,默认升序 -
sort(reverse=True)
降序排列 -
random.shuffle()
随机排列 -
sorted()
新建列表排序,默认升序 -
reversed()
返回迭代器,不对原表做任何修改,只返回逆序排列的迭代器对象。
其他
-
max()
返回最大值 -
min()
返回最小值 -
sum()
对数值型列表的所有元素进行求和,对非数值型元素列表运算报错。
列表中的二维列表
一维列表存储一维、线性的数据。
二维列表存储二维、表格的数据。
a[行][列]
元组
元组的元素不能修改。
元组的访问和处理速度比列表快。
元组可以作为字典的键,列表永远不能作为字典的键使用。
创建
-
小括号创建,小括号可省略
-
tuple()
可以将字符串、range函数、数组转换成元组。 -
生成器推到创建
例:a = (x*2 for x in range(10))
通过tuple(a)或a.next()依次调用
访问
元组 的访问和列表的访问相似。
元组中,没有list.sorted()方法,
对元组进行排序,只能使用内置函数sorted()生成新的 对象列表。
组合
- zip()
将多个列表对应位置的元素组合成为元组,返回zip对象。
字典
字典中存储键值对。
键值对是无序可变序列,字典中的每一个对象都是一个键值对,包含:“键对象”和“值对象”。
通过“键对象”实现快速获取、删除、更新对应的“值对象”。
“键对象”是任意不可改变数据。
“值对象”是任意数据,可重复。
创建
-
{}
-
dict()
方法一:B = dict(name=”xiaoming”,age=”20”)
方法二:C = dict([(“name”,”xiaoming”),(“age”,”20”)]) -
zip()
-
fromkeys()
创建值为空的字典。
例:A = dict.fromkeys[‘name’,’age’,’job’]
访问
-
[]
访问指定键,获得对应值。 -
get()
指定键不存在返回none,也可以返回指定的对象。
例:a.get(‘name键’,’指定返回的对象’) -
items()
列出所有的键值对 -
keys()
列出所有的键 -
values()
列出所有的值 -
len()
键值对的个数 -
in
判断成员
添加
-
[]
存在,则覆盖
不存在,新增 -
update()
将新字典中的所有键值对全部添加到就旧字典对象上,如果key右重复,则直接覆盖。
例:a.update(b)-------------------将b添加到a上(b为新字典,a为旧字典)
删除
-
del()
删除指定 -
clear()
删除全部 -
pop()
删除指定,并返回 -
popitem()
随机删除并返回简直对
序列解包在字典中的使用
Name,age,job=s-------------------默认对键进行解包
Name,age,job=s.values-------------------对值进行解包
Name,age,job=s.itms-------------------对键值进行解包
字典核心底层原理
放入
1.计算放入‘键’的散列值(hash()计算)
2.拿出散列值最右边的规定的数字作为偏移量
3.通过查看偏移量在bucket中是否右位置,有,存储。没有,在散列值中依次取偏移量在来计算。
4.Bucket中有2/3已满,则扩大容量
取出
1.计算要取出’键‘的散列值
2.在bucket中的对应位置是否为空,空,返回none。不为空,计算bucket中对应位置的键的散列值,和要取出的散列值比较,相等返回,不相等,依次取其他几位数字,重新计算偏移量,依次取完后,仍然没有找到,则返回none。
集合
集合是无序可变的,元素不能重复。
集合底层是字典的实现。
集合的所有元素都是字典中的‘键对象’,因此不能重复且唯一。
创建和删除
创建-------------------{}
添加-------------------add()
转换成集合-------------------set()
删除-------------------remove()
清空整个集合-------------------clear()
相关操作
| union 并集
& intersectiiin 交集
- difference 差集