Python 中的列表(list)、元组(tuple)、集合(set)、字典(dict)都是用于存储多个数据的容器类型,它们有共同点,也有明显区别。

可以先用一句话概括:

列表和元组是“有序序列”;集合是“无序不重复集合”;字典是“键值映射表”。


1. 四者的整体关系

                 Python 容器
                     |
     ---------------------------------
     |                |              |
   序列             集合            映射
     |                |              |
  list  tuple        set            dict

更详细:

类型中文存储方式是否有序是否可重复是否可变
list列表元素集合✅ 有序✅ 可以✅ 可变
tuple元组元素集合✅ 有序✅ 可以❌ 不可变
set集合元素集合❌ 无序❌ 不可以✅ 可变
dict字典键→值✅ 保持插入顺序key不可重复✅ 可变

2. 列表 list

特点

  • 有顺序
  • 可以修改
  • 可以存重复元素
  • 可以通过下标访问

例:

nums = [10, 20, 30, 20]

print(nums[0])

输出:

10

修改:

nums[1] = 99

print(nums)

结果:

[10, 99, 30, 20]

适合:

  • 数据经常变化
  • 需要保持顺序

例如:

students = ["Tom", "Jack", "Mary"]

3. 元组 tuple

元组和列表很像,但是:

元组创建后不能修改

例如:

point = (10, 20)

print(point[0])

输出:

10

但是:

point[0] = 100

会报错:

TypeError

因为 tuple 不可变。

适合:

  • 不希望数据被修改
  • 固定的数据

例如:

RGB = (255, 0, 0)

表示红色,不应该随意改变。


4. 集合 set

集合类似数学中的集合。

特点:

① 自动去重

s = {1,2,3,3,3}

print(s)

结果:

{1,2,3}

重复元素会消失。


② 没有下标

不能:

s[0]

因为集合没有顺序。


③ 支持集合运算

例如:

a = {1,2,3}
b = {3,4,5}

print(a & b)

交集:

{3}

并集:

print(a | b)

结果:

{1,2,3,4,5}

适合:

  • 去重
  • 判断包含关系

例如:

users = {"Tom", "Jack", "Mary"}

5. 字典 dict

字典保存的是:

key : value
键 : 值

例如:

student = {
    "name": "Tom",
    "age": 18,
    "score": 95
}

访问:

print(student["name"])

输出:

Tom

字典类似现实中的:

现实Python
身份证号key
姓名value

例如:

10001 → Tom
10002 → Jack
10003 → Mary

特点:

key必须唯一

d = {
    "a":1,
    "a":2
}

print(d)

结果:

{'a':2}

后面的覆盖前面的。


6. 四者最重要区别

(1)访问方式

list / tuple

靠位置:

a = ["apple","banana"]

a[0]

结果:

apple

dict

靠名字:

person = {
    "name":"Tom"
}

person["name"]

结果:

Tom

set

不能通过位置:

s={1,2,3}

s[0]

错误。


(2)可变性

可变:

可以修改内部内容:

list
set
dict

例如:

a=[1,2]
a.append(3)

不可变:

tuple

例如:

a=(1,2)

不能:

a[0]=3

(3)重复元素

允许重复:

list
tuple

例如:

[1,1,2]

(1,1,2)

不允许重复:

set
dict的key

例如:

{1,1,2}

结果:

{1,2}

7. 四者转换关系

它们之间可以互相转换:

list → tuple

a=[1,2,3]

b=tuple(a)

结果:

(1,2,3)

tuple → list

a=(1,2,3)

b=list(a)

结果:

[1,2,3]

list → set(去重)

a=[1,2,2,3]

b=set(a)

结果:

{1,2,3}

dict → list

d={"a":1,"b":2}

list(d)

得到:

['a','b']

默认取 key。


8. 实际选择口诀

需求选择
需要顺序、经常修改list
固定数据,不希望修改tuple
需要去重set
需要通过名字查找dict

9. 一个综合例子

假设保存学生信息:

列表:

students = ["Tom","Jack","Mary"]

表示:

一组学生名单


元组:

position = (120,80)

表示:

一个固定坐标


集合:

courses = {"Python","Java","C++"}

表示:

不重复课程集合


字典:

student = {
    "name":"Tom",
    "age":18,
    "score":90
}

表示:

一个学生对象的信息


最后总结一句:

  • list:有序、可变、可重复的“盒子”
  • tuple:有序、不可变的“固定盒子”
  • set:无序、不重复的“集合”
  • dict:键值对应的“查找表”

它们都是 Python 中最基础、最常用的数据结构。掌握这四个,基本就掌握了 Python 数据组织方式的核心。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐