组合数据类型——列表,元组,集合,字典__基本解析
组合数据类型——列表,元组,集合,字典
数据类型关键字比较 | 列表 | 元组 | 字典 | 集合 |
---|---|---|---|---|
是否可重复存储 | 是 | 是 | 是 | 否 |
是否可修改 | 是 | 否 | 是 | 是 |
是否有序列 | 是 | 是 | 否 | 否 |
(字典在python3.6之前存储的数据是没有顺序的,3.6及之后的版本,字典存储的数据变得有序。)
列表(list)
列表的特点:有顺序的,可以修改的,可以存放重复的,不同数据类型的多个数据
列表的声明
- 声明空列表
list1 = []
list2 = list()
声明空列表有以上两种方式 - 声明非空列表
列表中的数据是可以不同数据类型的,可以重复的数据。
列表的操作
lst = [“a”]
-
列表增加数据
lst.append()在列表末尾追加一个数据
lst.extend()在列表末尾追加多个数据,也可以理解为合并两个列表的数据
lst.insert(0, “b”)在索引为0的数据前增加一个数据,即指定位置增加数据。 -
列表修改数据
lst[索引] = ‘新数据’,通过索引对原位置数据进行覆盖,完成修改的目的 -
列表查询数据
lst[索引] 通过索引查找指定位置的数据
lst.sort()将列表数据从小到大排列,注意列表中的数据必须是可以相互之间进行比较的数据;[注意]: sorted() 和 sort() 的区别: 1. sort()是应用在 list 上的函数, 而 sorted()可以对所有的可迭代对象进行操作 2. list 的 sort 方法是作用在原列表上, 无返回值;内建函数 sorted 是将排序后的结果 返回一个新的 list,原 list 不发生改变
lst.reverse()将数据从大到小排列。
使用for循环遍历整个列表数据
lst.count(数据)查询列表中数据出现的次数
lst.index(数据)查询列表中数据第一次出现的位置;但是超出列表末尾之外的索引总是会导致错误,对列表末尾范围之外赋值也是如此 -
列表删除数据
lst.pop()默认删除提取列表最后的一个数据
lst.remove()指定删除数据
del lst[]使用python命令删除列表数据 -
列表的其他操作:
lst = [1, 2, 3, 4, 5]
max(lst) 获取列表最大值
min(lst)获取列表最小值
sum(lst)列表中的数据求和
以上三种列表的数据都必须是数值型数据。
元组(tuple)
元组的特点:有顺序的,不可修改的,可以存放重复的,不同数据类型的多个数据
元素的声明
声明空元组
t = tuple() 推荐,可读性高
t = () 不推荐,容易混淆
声明一个元素的元组
t = tuple([“a”]) 推荐
t = (“a”,) 不推荐
在声明一个元素的元组时不可以忽略逗号。
声明多个元素的元组
t = tuple([“a”, “b”, “c”]) 不推荐,繁琐
t = (“a”, “b”, “c”) 推荐
元组的操作
因为元组时不可修改的数据类型,所以元组只有删除整个元组和查询的操作
- 元组的查询
元组的查询和列表的一样
t = (“a”, “b”, “c”)
t[索引] 通过索引进行数据查询
t[起始位置:结束位置:步长] 元组通过切片完成数据查询
通过for循环完成对列表数据的查询
for i in t:
print(i)
t.count(数据) 获取元组中数据的个数
t.index(数据) 获取元组中数据第一次出现的位置
字典(dict)
字典的特点:没有顺序的,可修改的,键不可以重复,值可以重复,值可以是不同数据类型的多个数据
字典的声明
声明空列表
d = {}
d = dict()
声明非空列表
d = {“key”: “value”, “name”: “张三”} 推荐,直观易懂
d = dict([(“key”, “value”), (“name”, “张三”)]) 不推荐,繁琐
d = dict(key=“value”, name=“张三”) 还行,比较简单
字典的操作
增加键值对操作
方法 | 描述 |
---|---|
变量名[key]=value | 通过 key 添加 value 值,如果 key 存在则覆盖 |
setdefault(key,default_value) | 指定 key 和 value,如果 key 存在则不覆盖 |
删除操作
方法 | 描述 |
---|---|
pop | 弹出,返回并删除指定键对应的值 dict.pop(‘key’) |
popitem | 随机弹出一个键值元组,这里随机的原因是因为字典无序 |
clear | 清空字典 |
del | 删除整个字典,或者通过字典的 key 删除对应键值对;Python 内置方法,不是字典独有 的方法 |
修改操作
方法 | 描述 |
---|---|
字典名[key]=value | 通过 key 添加 value 值,如果 key 存在则覆盖 |
update() | 传递一个字典,如果 key 相同则覆盖,没有的 key 则添加 |
查询操作
方法 | 描述 |
---|---|
根据 key 查找 | 通过制定的 key 找对应的值 dict[‘key’] |
keys() | 包含字典所有 key 的 dict_keys 对象,该对象可以转换为列表 |
values () | 包含字典所有的 value 的 dict_keys 对象,该对象可以转换为列表 |
get() | 以键取值,如果指定键不存在,默认返回 None,可以指定返回内容 |
update() | 以字典格式更新指定键的内容,如果键不存在,创建键和值 |
items() | 返回字典键值呈元组形式的格式 |
len() | 测量字典,键值对的个数(整体) |
集合(set)
集合的特点:没有顺序的,可修改的,不可以重复的,可以是不同数据类型的多个数据
集合的声明
声明空集合
s = set()
声明非空集合
(1). 变量名={元素 1,元素 2,元素 3,…}
(2). 变量名=set(序列) 例如 变量名=set(元组,自动,字符串)
集合的操作
增加元素操作
方法 | 描述 |
---|---|
add() | s.add(元素) |
update() | s.update({元素4, 元素5}) |
删除元素操作
方法 | 描述 |
---|---|
pop() | s.pop()随机删除一个元素 |
remove() | s.remove(元素4)指定删除一个元素 |
clear() | s.clear()清空集合 |
def s | 删除集合 |
遍历集合操作
方法 | 描述 |
---|---|
for i in s: print(i) |
通过for循环遍历集合所有数据 |
集合的其他操作
方法 | 描述 |
---|---|
‘discard’ | 删除一个指定的数据,如果数据不存在什么都不做 |
‘isdisjoint’ | 判断元素是否在集合中 |
‘issubset’ | s1 集合中的数据是不是包含在 s2 集合中,等价于 s1 < s2 |
‘issuperset’ | s1 集合是不是包含了 s2 集合中你的数据,等价于 s1 > s2 |
‘difference’ | 获取 s1 集合和 s2 集合的差集 |
‘difference_update’ | 获取 s1 和 s2 的差集并将结果数据更新前集合中 |
‘intersection’ | 获取 s1 集合和 s2 集合的交集 |
‘intersection_update’ | 获取 s1 和 s2 的交集并将结果更新到前集合中 |
‘symmetric_difference’ | 获取 s1 和 s2 共同的差集 |
‘symmetric_difference_update’ | 获取共同的差集并更新到 前集合中 |
‘union’ | 获取 s1 和 s2 的并集 |
‘update’ | 获取 s1 和 s2 的并集,并将数据更新给 s1 |