py基础系列(三):python容器数据类型(上)
Python容器数据类型
除基本类型外,Python还提供了容器数据类型,可容纳批量数据。有以下三种类型:
1.序列类型:序列类型的元素都有索引序号,可通过索引访问元素 。字符串 列表 元组
2.映射类型:映射类型的元素由键(key)和值(value)组成,称为“键值对”,键必须唯一。 字典
3.集合类型:集合类型中的元素无序且不允许重复
列表
列表中的元素类型可以相同也可以不同
(1)创建列表
创建列表方法一: x=[元素1, 元素2, … ] 或 x=list( 元素 )
创建列表方法二: xlist(可迭代对象/list容器)创建
(2)列表基本操作
访问列表中元素: 列表对象[index]
列表合并: 运算符“+”将两个列表合并在一起
重复: 使用运算符“*”创建具有重复元素的列表
迭代: 迭代操作可用于遍历列表中的元素
成员判断: “in”操作符判断对象是否属于列表,返回逻辑值
(3)列表常用函数
函数名 | 说明 |
---|---|
append(x) | 在尾部添加新元素x(这个元素可以是队列或其他类型) |
index(x) | 返回x在列表中的索引位置,不含x将返回一个运行时错误 |
count(x) | 统计指定元素值x的出现次数 |
del 对象[index] | 删除列表对象中索引为index的元素 |
extend(lst) | 添加新列表lst |
insert(index, x) | 插入新元素 |
len(lst) | 求列表长度 |
pop(index) | 根据索引删除元素,并返回删除对象 |
remove(x) | 删除元素x |
reverse() | 逆排列 |
sort() | 排序 |
注意:
删除函数:
pop(index) 删除索引为index的元素并返回该元素
remove(x) 删除元素x 没有返回
del 该方法时独立的 ,不是列表容器的方法。可以删除所有变量
排序函数:
sort(lst) 默认升序排序(reverse=True则变为降序),改变原列表lst。
返回值为None
若写成lst2=lst.sort() 则lst2被赋值为None
lst2=sorted(lst) 不改变源列表lst 返回排序后的列表
index(x) x不存在则报错
count(x) 统计x出现的次数,x不存在则返回0
改变原列表的函数:
reverse() 没有返回值
sort() 没有返回值
extend() 没有返回值
extend()函数和合并符号"+"
extend()参数为列表 没有返回值 lst=lst.extend(lst1) lst 得到的结果是None
+:合并两个列表 左右操作数都为列表
示例
补充:
这里列表y被当作一个元素添加到x末尾
lst.index(value,[start,[stop]])
lst.insert(index,value)
index范围[0,lst.length]
列表求和:sum(lst)
列表长度:len(lst)
extend()无返回值
删除列表中元素
pop(index)
remove(x)
extend()参数必须为列表 否则会报类似如下错误
reverse()
sort()
sorted
(4)切片
列表对象[start : end : step]
start:切片的开始索引位置,可省略,默认为0;
end:切片的终止索引位置(不包括),可省略,默认为列表长度;
step:步长,表示截取数据的步长,正数表示从左向右截取,负数表示从右向左截取,可省略但不能为0,默认为1。
[begin🔚step] begin和end都省略不写这为列表从头到尾
(5)range()
(6)列表生成式
新列表对象=[ 表达式 for 变量 in 可迭代对象 <if 条件> ]
示例
#这里if条件这样理解python中1的真值为True
for x in range(6):
if x%2==1:
y.append(x**2)
产生6以内的奇数的平方元组特点:
序列类型 元组
特点:
序列数据类型容器,可以按索引访问,允许重复值。自创建后,元组的值就不能修改。元组是不可变类型元组没有find()函数
(1)创建元组
创建元组方法一
创建元组方法二:
tuple(可迭代对象)
可迭代对象有:
列表 字符串 range
示例
(2)索引
由于元组不能修改添加值,所以不能赋值、没有append()、extend()函数
切片操作
合并操作
元组和列表的相互转换
序列类型容器常用函数
映射类型 字典
(1)创建字典
(2)字典的访问
只能通过键访问值,不能通过值取得键
(3)添加和修改字典元素
字典对象[key] = value
当key存在就是修改,key不存在则是添加
字典函数
函数名 | 说明 |
---|---|
clear () | 清除所有元素 |
copy() | 复制整个字典 |
del 对象[key] | 删除字典对象中键为key的元素 |
get(key, default) | 返回键key对应的值,如果字典中不存在key键则返回default |
items() | 返回所有键值对 |
keys() | 返回所有键 |
pop(key, default) | 返回键key对应的值,并删除该元素,如果字典中不存在key键则返回default |
update(dct) | 将dct的数据更新字典元素 |
values() | 返回有所值 |
集合
(1)创建集合
格式为:{元素1, 元素2, …} 或 set(可迭代对象)
**注意:**创建空集合只能用set()函数,不能用{}, {}创建的是空字典。
创建集合时,其内部的元素不能是 列表/字典/集合 等可变数据
列表不能作为集合的值
(2)遍历集合
输出顺序不一定和定义顺序相同,因为集合是无序的
(3)常用集合函数
函数名 | 说明 |
---|---|
add(x) | 添加元素。如果集合中不存在元素x则添加。 |
clear () | 清除所有元素 |
copy() | 复制整个集合 |
discard(x) | 删除元素。如存在x则删除, 如不存在也不报错 |
len(s) | 返回集合s的元素个数 |
pop() | 随机返回集合中一个元素,并删除该元素 |
remove(x) | 删除元素。如存在x则删除,如不存在则报错 |
update() | 将另一个集合元素添加进来 |
示例
pop()函数是随机返回一个元素
(3)集合运算:并、交、差
运算符 | 说明 |
---|---|
S & T | 交集。返回一个在两个集合S和T中都存在的元素的新集合 |
S | T |
S - T | 差集。返回一个在集合S存在,但在集合T不存在的元素的新集合 |
S ^ T | 对称差集。返回一个不在集合S和集合T同时存在的元素的新集合 |
S == T | 如果集合S和集合T中元素相同,返回True,否则返回False |
S != T | 如果集合S和集合T中元素不相同,返回True,否则返回False |
S <= T | 子集测试。如果集合S是集合T的子集,则返回True,否则返回False |
S < T | 真子集测试。如果集合S是集合T的真子集,则返回True,否则返回False |
S >= T | 超集测试。如果集合S是集合T的超集,则返回True,否则返回False |
S > T | 真超集测试。如果集合S是集合T的真超集,则返回True,否则返回False |
注意:运算符的优先级
算数运算符>关系运算符>逻辑运算符
参考资料