高级数据类型
Python内置的这些数据类型及其常用,绝大多数的时候能解决几乎所有的问题,并且和其他语言有一点不太一样。
Python是一种动态语言,所有的数据类型都是自动匹配、可变的。
最常用的两种是List和dict
各种数据类型的定义方法
List:打了激素的数组
list是一个可变的有序表,是Python中最常用的数据类型(Pyhton没有数组),List又成打了激素的数组。 参考
特点
-
⭐️元素数据类型不受限制。
-
元素之间没有任何关系
-
可以实现一系列操作,例如随时添加和删除、取切片、连接等。
定义方法
使用[xxx, xxx]这样的语法结构来定义list,例如:
list = [1, 2, (3,4), True, 'hello', 4.2]
特性
1. 索引
| 代码 | 操作 |
|---|---|
list[0] | 拿出列表第一个元素 |
list[-1] | 拿出列表最后一个元素 |
list[2][0] | 拿出列表的第三个元素是一个元组,在拿出元组的第一个元素 |
2. 切片
| 代码 | 操作 |
|---|---|
list[:3] | 拿出列表前三个元素 |
list[2:] | 拿出列表除了前两个元素外的其他元素 |
list[-2:] | 拿出列表除了后两个元素外的其他元素 |
list[0:3] | 拿出列表中0-2三个元素 |
3. 成员操作符in/not in
>>> 'hello' in list
True
4. 连接
使用+即可以实现list之间的连接
list1 = [1, 2]
list2 = [3, 4]
list = list1 + list2
print(list)
<<< [1, 2, 3, 4]
5. 长度
len(list)
6. list的CRUD
增加
| 代码 | 操作 |
|---|---|
+ | 常规添加,和连接一个原理 |
append | 追加一个元素到末尾 |
extend | 追加多个元素到末尾list.extend([1, 2]) |
insert | 在指定索引位置插入 list.insert(1, 'hello') |
删除
| 代码 | 操作 |
|---|---|
pop() | 传递值删除指定索引元素,默认删除最后一个元素 |
remove() | 删除指定元素 remove('hello') |
查看
| 代码 | 操作 |
|---|---|
count() | 查看某元素的出现次数 |
index() | 查看指定元素的索引值 |
修改
可以直接通过索引,或者切片直接赋值修改:
list[:2] = ['1', 'b']
排序
默认sort()的reverse为False,升序排列,修改为True后,则为降序排列
list.sort(reverse=True)
Tuple(元组):不可变的List
tuple一旦初始化后就不能修改,取元素的方法同list一样。
特点
- 更加安全,优先用tuple
- 同样可以包含不同的数据类型
- tuple不可变,但tuple中的list可变
定义方式
⭐️在定义tuple时其元素就必需被确定好,如果定义一个空的tuple,写作:t = ()。
如果想定义一个只有一个元素的tuple时要在末尾加一个逗号,写作:t=(1,)
dict(字典)
就是键-值(key-value)存储的map(映射),查找速度极快。
⭐️dict在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象。比如List就是一种可变对象,所以不可以作为key。最常用的key是字符串str。
特点
- 是一种可变容器模型,且可存储任意类型对象。
- 查找和插入的速度极快,不会随着key的增加而变慢。
- 需要占用大量的内存,内存浪费多。
- 字典不能索引和切片,因为字典是无序的数据类型。
- 字典不支持重复和连接。
- 字典支持成员操作符,判断字典的key值是否在字典中存在:
in,not in
定义方式
定义一个字典:dict = {'key1': 'value1', 'key2': 'value2'}
定义一个空字典:dict = {}
特性
添加/修改
-
直接使用等号赋值即可,如果已存在则修改:
d['Jack'] = 90 -
使用
get(<key>)方法传入key,如果不存在则返回None
查看
直接使用[]即可
删除
使用pop(<key>)函数,传入删除指定key
循环
d = {1:1, 2:2, 'a':3, 'b':4}
for k,v in d.items():
print(k ,'-->', v)
set(集合):不能重复
存储key不能重复,自动去重。set可以看成数学意义上的无序和无重复元素的集合
定义
要创建一个set,需要提供一个list作为输入集合:
s = set([1, 2, 3])
⚠️必须写成set([xx, xx, xx]),缺少set和[]都会导致类型实际上是List。
特性
添加与删除
使用add(<key>)添加,使用remove(<key>)删除。
集合运算
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
str
是一种不可变对象