自己学习记录,有问题的地方,欢迎大佬指正(当然,前提是有人看的话)
组合数据类型
分类依据 | 数据存放是否有序 | 元素值是否可变 | 数据之间的关系 |
---|---|---|---|
列表 | 有序 | 可变 | 序列类型 |
元组 | 有序 | 不可变 | 序列类型 |
字符串 | 有序 | 不可变 | 序列类型 |
字典 | 无序 | 可变 | 映射类型 |
集合 | 无序且不重复 | 可变 | 集合类型 |
按照数据之间的关系划分
序列类型
有序元素的向量,可通过索引访问任一一个元素( 包括字符串,列表,元组)
- 操作
- 双向索引
- 正向从0递增,逆向从-1递减
- 切片
- name[start :end :step]
- 双向索引
集合类型
注意
- 无序性—不能通过下标索引
- 集合中元素不可变---- 集合的元素只能是固定数据类型 (例:整数,浮点数,字符串,元组等) 列表、字典以及集合类型是可变的,不能作为集合的数据元素
- 不包含重复元素—可用于对数据去重处理
映射类型
无序性--键值对,通过键获取相应的值
列表
[]:
① 元素类型不限
② 可变,有序,连续内存
(一) 基本操作
1.创建
(1) 赋值语句创建
(2) list()函数创建
(3)特殊列表(数字)
2.删除
3.元素获取
(1)索引
(2)直接访问
(3) 切片
截取全部,反向获取
4.遍历元素(for循环)
(1)利用变量i,通过列表名字直接获取
(2)利用列表有序性,通过下标索引的方式获取
利用到len()函数
5.修改
(1) 索引指定
(2) 切片批量修改
6.添加
(1)append()
末尾添加,且只能加一个元素
(2) extend()
末尾添加,([add]),可添加多个元素
(3)insert()
指定索引添加一个元素
7.删除元素
(1)del
用 索引 指定删除
(2)pop
删除指定索引,若没有指定索引,删除末尾元素??
(3)remove
指定 内容 删除
(4)切片删除
相当于修改
(5)clear()
清空所有元素
(二)列表可用操作符
1. 标准操作符:
-
对象值比较
< , > , = , <= , >= , == , !=
-
对象身份比较
is , is not
-
布尔运算符
not , and ,or
2.序列专用操作符:
连接+ ,重复 * , 关系 in
(三)列表常用函数
(1)len(),max(), min(), sum()
len()求长度,max()最大值(如果是字符串,是一个符号一个符号比较),sum()求和(数据类型为数值型)
(2)list(),tuple()
通过list函数创建列表
(3)zip()
两个列表
(4)enumerate()
序列号+元素
(5)sorted()
sorted(list_name)-----从小到大排序,reverse---从大到小排序
(6)reversed()
直接倒序
(7)count()
对列表中指定元素内容进行计数
(8)index()
查找列表中指定内容的下标,如果有重复元素,只会返回第一个查找到的
(9) sort(),reverse(),shuffle()
不同于sorted(),reversed(),zip()函数只是对列表进行迭代后输出,不会改变原列表,
sort(),reverse(),shuffle()会改变原列表的顺序
sort()可以自定义排序
(10) copy()
注意copy和直接等于赋值的区别:
前者是重新开一个列表空间,两个列表之后的操作互不干涉
后者相当于给一个列表取两个名字(类似于C++的引用),操作都是对同一列表进行的。