Python 容器类型学习笔记:列表、元组、字典、集合
- 前言
- [一、列表list ](#一、列表list[ ])
-
- [1.1 基本特点](#1.1 基本特点)
- [1.2 增加元素](#1.2 增加元素)
- [1.3 修改元素](#1.3 修改元素)
- [1.4 查找元素](#1.4 查找元素)
- [1.5 删除元素](#1.5 删除元素)
- [1.6 排序与反转](#1.6 排序与反转)
- [1.7 列表推导式](#1.7 列表推导式)
- [1.8 列表嵌套](#1.8 列表嵌套)
- 二、元组tuple()
-
- [2.1 基本特点](#2.1 基本特点)
- [2.2 元组允许的操作](#2.2 元组允许的操作)
- [2.3 元组使用场景](#2.3 元组使用场景)
- 三、字典dict{Key:value}
-
- [3.1 基本特点](#3.1 基本特点)
- [3.2 获取元素](#3.2 获取元素)
- [3.3 新增/修改元素](#3.3 新增/修改元素)
- [3.4 删除](#3.4 删除)
- [3.5 字典遍历相关方法](#3.5 字典遍历相关方法)
- 四、集合set{元素1,元素2}
-
- [4.1 基本特点](#4.1 基本特点)
- [4.2 增加元素](#4.2 增加元素)
- [4.3 删除元素](#4.3 删除元素)
- [4.4 集合运算(交集、并集)](#4.4 集合运算(交集、并集))
前言
前面学习了字符串,字符串只能存文本。当我们需要保存一组,一批数据的时候,就要使用容器类型:列表、元组、字典、集合。
- 列表 list:有序、可变,最常用容器
- 元组 tuple:有序、不可变,保护数据不被修改
- 字典 dict:键值对存储,根据 key 取值,无序(Python3.7 + 保留插入顺序)
- 集合 set:无序、元素自动去重,做交集、并集、快速去重
一、列表list
1.1 基本特点
- 符号:中括号
[],元素逗号隔开 - 有序、可变(支持增删改)
- 列表里面可以存放任意类型数据:数字、字符串、列表嵌套等
- 支持下标索引、切片、for 循环遍历,规则和字符串完全一致
python
li = [10, "冰冰", True, 3.14]
print(li[0])
print(li[1:3])
for item in li:
print(item)
1.2 增加元素
append(元素):末尾追加 1 个元素,最常用
python
li = [1,2,3]
li.append(4)
# [1,2,3,4]
extend(可迭代对象):把序列里面每一个元素拆开,逐个追加
⚠️不能直接放数字,数字不是可迭代对象;可以传字符串、列表、元组
python
li.extend([5,6])
insert(下标,元素):指定下标位置插入,后面元素后移;效率低,少用。
python
li.insert(1, 99)li.remove(2)
1.3 修改元素
通过下标直接赋值,列表可变,原地修改
python
li[0] = 100
1.4 查找元素
in / not in:判断元素是否存在列表,返回布尔 True/Falselist.index(元素):返回元素第一次出现的下标;找不到直接报错 ValueErrorlist.count(元素):统计元素出现次数,不存在返回 0
1.5 删除元素
del 列表[下标]:按下标删除;也可以del 列表直接删除整个变量remove(值):**按值删除,删除第一个匹配到的元素;找不到报错
python
li.remove(2)
✨【课件补充知识点】pop(下标):弹出并返回对应下标的元素;不传参数默认删除最后一个元素
python
li = [10,20,30]
res = li.pop() # 删除末尾30,res拿到30
print(res)
1.6 排序与反转
sort():原地排序,默认从小到大;sort(reverse=True)实现从大到小
python
li = [3,1,4,2]
li.sort()
li.sort(reverse=True) #降序
reverse():原地反转列表顺序,不做大小排序,只是颠倒位置
💡课件补充:
sorted(li):返回新列表 ,不会改动原列表;li.sort()直接修改原列表。
1.7 列表推导式
语法:
[表达式 for 变量 in 可迭代对象][表达式 for 变量 in 可迭代对象 if 条件]
python
# 1‑10
li = [i for i in range(1,11)]
# 获取偶数
li = [i for i in range(1,11) if i%2 ==0]
# 每个元素*2
li = [i*2 for i in range(1,6)]
1.8 列表嵌套
列表里面包含列表;多层用多层下标取值
python
li = ["a","b", ["d","e"]]
print(li[2][0]) # d
二、元组tuple()
2.1 基本特点
- 符号:小括号
(),元素逗号隔开 - 有序、不可变!不能增、删、改元素,只能查询读取
- 可以存任意类型;支持下标、切片、for 遍历、in、index、count、
len() - ⚠️只有一个元素的时候,末尾必须加逗号
(10,),否则不是元组!
python
t1 = (10) # int
t2 = (10,) # tuple
t3 = () # 空元组
2.2 元组允许的操作
✅可以:索引、切片、遍历、in/not in、index()、count()、len()
❌禁止:t[0]=xxx 修改元素,会报TypeError
✨【课件补充重要坑】元组不可变指元组本身的元素引用不能变 ,如果元组里面嵌套列表,列表内部可以修改!
python
t = (1, 2, [3,4])
t[2][0] = 99
print(t) # (1,2,[99,4]) 合法!元组存的是列表的地址,列表自身可变
2.3 元组使用场景
- 保护数据,防止程序意外修改;
- 函数多返回值,本质返回元组;
- 格式化输出
%后面括号就是元组。
💡小知识:可以用
list(元组)把元组转为列表;tuple(列表)把列表转为元组。
三、字典dict{Key:value}
3.1 基本特点
- 符号:大括号,键值对格式
key: value,逗号分隔 - Python3.7 以后字典保留插入顺序;旧版本无序
- key(键)必须唯一;value(值)可以重复 ;key 必须是可哈希类型:字符串、数字、元组;列表、字典不能做 key
- 没有数字下标!只能通过 key 来取值
python
dic = {"name":"冰冰","age":18}
3.2 获取元素
字典[key]:通过键取值;key 不存在直接报错 KeyError字典.get(key, 默认值):推荐!key 不存在返回None,也可以自己设置默认返回值
python
print(dic.get("tel")) # None
print(dic.get("tel","未知")) # 未知
3.3 新增/修改元素
字典[key] = 值
规则:key 已经存在就是修改;key 不存在就是新增键值对
python
dic["age"] = 20
dic["gender"] = "女"
3.4 删除
del 字典[key]:删除指定键值对;key 不存在报错;del 字典删除整个字典变量clear():清空字典内部所有键值对,保留空字典对象
✨课件补充:
pop(key)删除 key 并且返回对应 value。
python
res = dic.pop("age")
print(res)
3.5 字典遍历相关方法
len(字典):统计键值对的总个数.keys():获取全部的键.values():获取全部的值.items():获取全部键‑值对,每一组是元组(key,value)
python
d = {"name":"bingbing","age":18}
for k in d.keys():
print(k)
for v in d.values():
print(v)
for k,v in d.items():
print(k, v)
简写:
for k in d:默认遍历字典所有 key。
字典适用场景
适合描述一个对象的多项属性:学生信息、商品信息。
四、集合set{元素1,元素2}
4.1 基本特点
- 符号:大括号
{},注意:{}是空字典!空集合必须写set()
python
s_empty = set() #空集合
- 无序、元素自动去重;元素必须可哈希(数字、字符串、元组,不能放 list/dict)
- 没有下标、不支持索引、切片!不能通过下标拿元素。
python
s = {1,2,2,3,3,3}
print(s) # {1,2,3}自动去重
4.2 增加元素
add(元素):添加单个整体元素update(可迭代对象):拆分序列,逐个添加多个元素
python
s = {1,2}
s.add(3)
s.update("456")
4.3 删除元素
remove(x):删除元素;元素不存在直接报错discard(x):删除元素;不存在什么都不做,不会报错(推荐)
✨课件补充:
pop()随机删除一个元素并返回;集合无序,不知道删哪一个。
4.4 集合运算(交集、并集)
- 交集
&:两个集合共同拥有的元素 - 并集
|:两个集合所有元素,自动去重 - 差集
-:a - b在 a 里面但是不在 b 里面的元素
python
a = {1,2,3,4}
b = {3,4,5,6}
print(a & b) #交集 {3,4}
print(a | b) #并集 {1,2,3,4,5,6}
print(a - b) #差集 {1,2}
集合使用场景
- 快速对列表去重 :
list(set(li))
⚠️注意:集合无序,会打乱原来顺序。
| 类型 | 符号 | 有序? | 可变? | 取值方式 | 特点 |
|---|---|---|---|---|---|
| list 列表 | [] |
✅有序 | ✅可变 | 数字下标 | 最通用,可增删改,允许重复元素 |
| tuple 元组 | () |
✅有序 | ❌不可变 | 数字下标 | 保护数据,不能修改;单元素必须加逗号 |
| dict 字典 | {k:v} |
3.7 + 有序 | ✅可变 | key 键取值 | 键值对存储,key 唯一,适合存对象属性 |
| set 集合 | {} |
❌无序 | ✅可变 | 无下标 | 自动去重,做交集并集,不能索引取值 |
补充转换函数:
list(对象)转列表tuple(对象)转元组set(对象)转集合(快速去重)
如果这篇文章对你有帮助,欢迎收藏,也欢迎在评论区交流你踩过的 Python 坑。