Python 容器类型学习笔记:列表、元组、字典、集合

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 基本特点

  1. 符号:中括号 [],元素逗号隔开
  2. 有序、可变(支持增删改)
  3. 列表里面可以存放任意类型数据:数字、字符串、列表嵌套等
  4. 支持下标索引、切片、for 循环遍历,规则和字符串完全一致
python 复制代码
li = [10, "冰冰", True, 3.14]
print(li[0])
print(li[1:3])
for item in li:
    print(item)

1.2 增加元素

  1. append(元素)末尾追加 1 个元素,最常用
python 复制代码
li = [1,2,3]
li.append(4)
# [1,2,3,4]
  1. extend(可迭代对象):把序列里面每一个元素拆开,逐个追加

⚠️不能直接放数字,数字不是可迭代对象;可以传字符串、列表、元组

python 复制代码
li.extend([5,6])
  1. insert(下标,元素)指定下标位置插入,后面元素后移;效率低,少用。
python 复制代码
li.insert(1, 99)li.remove(2)

1.3 修改元素

通过下标直接赋值,列表可变,原地修改

python 复制代码
li[0] = 100

1.4 查找元素

  1. in / not in:判断元素是否存在列表,返回布尔 True/False
  2. list.index(元素):返回元素第一次出现的下标;找不到直接报错 ValueError
  3. list.count(元素):统计元素出现次数,不存在返回 0

1.5 删除元素

  1. del 列表[下标]:按下标删除;也可以del 列表直接删除整个变量
  2. remove(值):**按值删除,删除第一个匹配到的元素;找不到报错
python 复制代码
li.remove(2)

✨【课件补充知识点】pop(下标):弹出并返回对应下标的元素;不传参数默认删除最后一个元素

python 复制代码
li = [10,20,30]
res = li.pop()   # 删除末尾30,res拿到30
print(res)

1.6 排序与反转

  1. sort():原地排序,默认从小到大;sort(reverse=True)实现从大到小
python 复制代码
li = [3,1,4,2]
li.sort()
li.sort(reverse=True) #降序
  1. 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 基本特点

  1. 符号:小括号(),元素逗号隔开
  2. 有序、不可变!不能增、删、改元素,只能查询读取
  3. 可以存任意类型;支持下标、切片、for 遍历、in、index、count、len()
  4. ⚠️只有一个元素的时候,末尾必须加逗号 (10,),否则不是元组!
python 复制代码
t1 = (10)     # int
t2 = (10,)    # tuple
t3 = ()       # 空元组

2.2 元组允许的操作

✅可以:索引、切片、遍历、in/not inindex()count()len()

❌禁止:t[0]=xxx 修改元素,会报TypeError

✨【课件补充重要坑】元组不可变指元组本身的元素引用不能变 ,如果元组里面嵌套列表,列表内部可以修改!

python 复制代码
t = (1, 2, [3,4])
t[2][0] = 99
print(t) # (1,2,[99,4]) 合法!元组存的是列表的地址,列表自身可变

2.3 元组使用场景

  1. 保护数据,防止程序意外修改;
  2. 函数多返回值,本质返回元组;
  3. 格式化输出%后面括号就是元组。

💡小知识:可以用list(元组)把元组转为列表;tuple(列表)把列表转为元组。

三、字典dict{Key:value}

3.1 基本特点

  1. 符号:大括号,键值对格式 key: value,逗号分隔
  2. Python3.7 以后字典保留插入顺序;旧版本无序
  3. key(键)必须唯一;value(值)可以重复 ;key 必须是可哈希类型:字符串、数字、元组;列表、字典不能做 key
  4. 没有数字下标!只能通过 key 来取值
python 复制代码
dic = {"name":"冰冰","age":18}

3.2 获取元素

  1. 字典[key]:通过键取值;key 不存在直接报错 KeyError
  2. 字典.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 删除

  1. del 字典[key]:删除指定键值对;key 不存在报错;del 字典删除整个字典变量
  2. clear():清空字典内部所有键值对,保留空字典对象

✨课件补充:pop(key) 删除 key 并且返回对应 value。

python 复制代码
res = dic.pop("age")
print(res)

3.5 字典遍历相关方法

  1. len(字典):统计键值对的总个数
  2. .keys():获取全部的键
  3. .values():获取全部的值
  4. .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 基本特点

  1. 符号:大括号{}注意:{}是空字典!空集合必须写set()
python 复制代码
s_empty = set() #空集合
  1. 无序、元素自动去重;元素必须可哈希(数字、字符串、元组,不能放 list/dict)
  2. 没有下标、不支持索引、切片!不能通过下标拿元素。
python 复制代码
s = {1,2,2,3,3,3}
print(s) # {1,2,3}自动去重

4.2 增加元素

  1. add(元素)添加单个整体元素
  2. update(可迭代对象):拆分序列,逐个添加多个元素
python 复制代码
s = {1,2}
s.add(3)
s.update("456")

4.3 删除元素

  1. remove(x):删除元素;元素不存在直接报错
  2. 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}

集合使用场景

  1. 快速对列表去重list(set(li))

⚠️注意:集合无序,会打乱原来顺序。

类型 符号 有序? 可变? 取值方式 特点
list 列表 [] ✅有序 ✅可变 数字下标 最通用,可增删改,允许重复元素
tuple 元组 () ✅有序 ❌不可变 数字下标 保护数据,不能修改;单元素必须加逗号
dict 字典 {k:v} 3.7 + 有序 ✅可变 key 键取值 键值对存储,key 唯一,适合存对象属性
set 集合 {} ❌无序 ✅可变 无下标 自动去重,做交集并集,不能索引取值

补充转换函数:

  • list(对象)转列表
  • tuple(对象)转元组
  • set(对象)转集合(快速去重)

如果这篇文章对你有帮助,欢迎收藏,也欢迎在评论区交流你踩过的 Python 坑。

相关推荐
别动我齐刘海1 小时前
ROS2 Jazzy + C++ 实战路线——基础学习2
c++·人工智能·vscode·python·学习·机器学习·机器人
2501_933670791 小时前
平台招商运营校招能力模型:数据分析、SQL与增长场景拆解
开发语言
AR-26710-1 小时前
Linux Day7——建组/用户、umask、Python脚本
linux·python
打工仔折腾 AI2 小时前
普通摄像头接入AI识别:绿联NAS部署Frigate监控实战
人工智能·后端·python·性能优化·ai agent 实战
菜鸟~noob2332 小时前
【Bonjour】华为Peerium架构深度解析:从冯·诺依曼到百万处理器“一台计算机”,附MATLAB性能仿真【含matlab代码,可直接运行】
开发语言·matlab·华为·peerium
kuuailetianzi2 小时前
第3篇:《变量、数据类型与基本运算》
python
白远山2 小时前
24小时自助健身房系统开发实战:从需求分析到完整指南
java·开发语言·数据库·数据挖掘·需求分析
Hotchip_MEMS2 小时前
传统咪头与MEMS硅麦:雾化器气流传感方案对比
人工智能·笔记·物联网·电脑·制造
志尊宝3 小时前
Vue3 零基础每日笔记(040):Vite 创建 Vue3 + TS 项目——企业标配从这一篇开始
笔记·vue·html·前端开发·软件开发