【Python】进阶数据类型
列表(List)
列表也是Python中的基础数据结构,是一个有序的集合,表现形式为方括号内用逗号分割的各个数据项集合,列表中的数据项可以是不同的数据类型。
列表中的每个值都有对应的位置索引,索引从0开始,索引范围为0~len(list)-1,当超出范围时会报IndexError错误,取最后一个元素时可以用-1做索引。
列表函数
函数 | 描述 | 举例 |
---|---|---|
len() | 列表数据项个数 | len(list1) |
max() | 列表数据项中的最大值(列表所有数据项类型相同时) | max(list1) |
min() | 列表数据项中的最小值(列表所有数据项类型相同时) | min(list1) |
append() | 列表末尾追加数据项 | list1.append('1994') |
insert() | 指定位置插入数据项 | list1.insert(1,'Henry-chr') |
pop(1) | 删除指定位置数据项(未指定位置时默认末尾) | list1.pop(1) |
count() | 元素在列表中出现的次数 | list1.count('1854') |
remove() | 移除列表中的第一个匹配项 | list1.remove('2000') |
reverse() | 反向列表 | list1.reverse() |
sort() | 列表排序 | list1.sort() |
元组(Tuple)
tuple同list类似,但是tuple一旦初始化就不能修改。 tuple使用小括号(),list使用方括号[]
当tuple只有一个数据项时定义方法如下:
字典(Dict)
字典使用键-值(key-value)存储,具有极快的查询速度
字典的每个键值对(key=>value)用冒号(:)分割,每个键值对之间用逗号(,)分割,整个字典包括在花括号 {} 中
字典的值可以取任何数据类型,但字典的键必须是唯一不可变的
字典函数
函数 | 描述 | 举例 |
---|---|---|
get() | 返回指定键的值 | dict1.get('name') |
items() | 返回字典所有的键值对(动态视图:随字典的改变而改变) | dict1.items() |
keys() | 返回字典所有的键(动态视图:随字典的改变而改变) | dict1.keys() |
values() | 返回字典所有的值(动态视图:随字典的改变而改变) | dict1.values() |
pop() | 删除指定key | dict1.pop('age') |
字典VS列表
- 字典
- 查找和插入的速度极快,不会随着key的增加而变慢;
- 需要占用大量的内存,内存浪费多。
- 列表
- 查找和插入的时间随着元素的增加而增加;
- 占用空间小,浪费内存很少。
集合(Set)
集合是一个无序的不重复元素序列。 可以使用大括号 { } 或者 set() 函数创建集合。
集合函数
函数 | 描述 | 举例 |
---|---|---|
add() | 添加元素 | set1.add('Jingdong') |
remove() | 移除指定元素(当元素不存在时报错) | set1.remove('Taobao') |
discard() | 移除指定元素(当元素不存在时不报错) | set1.discard('Taobao') |
pop() | 随机移除元素(返回被移除元素的值) | set1.pop() |
len() | 计算集合元素个数 | len(set1) |
difference() | 返回集合的差集(返回一个移除相同元素的新集合) | x.difference(y) |
difference_update() | 返回集合的差集(直接在原来的集合中移除元素,没有返回值) | x.difference_update(y) |
intersection() | 返回集合的交集(返回一个新集合) | x.intersection(y) |
intersection_update() | 返回集合的交集(在原始的集合上移除不重叠的元素) | x.intersection_update(y) |
isdisjoint() | 判断两个集合是否包含相同的元素 | x.isdisjoint(y) # y中是否有集合x的元素 |
issubset() | 判断集合的所有元素是否都包含在指定集合中 | x.issubset(y) # 判断集合 x 的所有元素是否都包含在集合 y 中 |
issuperset() | 判断集合的所有元素是否都包含在指定集合中 | x.issuperset(y) # 判断集合 y 的所有元素是否都包含在集合 x 中 |
symmetric_difference() | 返回两个集合中不重复的元素集合 | x.symmetric_difference(y) # 移除两个集合的重复元素返回两个集合中不重复的元素集合 |
symmetric_difference_update() | 返回两个集合中不重复的元素集合 | x.symmetric_difference_update(y) # 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中 |
union() | 返回两个集合的并集 | x.union(y) # 重复的元素只会出现一次 |