前言

Python 提供了多种内置数据类型来存储和操作数据,其中 列表元组字典集合 是最常用的四种数据结构。它们在特性、用途和操作上各有不同,适用于不同的场景


1. 列表

1.1 什么是列表

  • 列表(list)是一个有序的、可变的集合,可以包含任意类型的元素

  • 使用方括号 [] 定义,元素之间用逗号 , 分隔


1.2 列表操作

1.2.1 创建列表

# 创建空列表
empty_list = []
​
# 含有多个元素的列表
fruits = ["apple", "banana", "cherry"]
numbers = [1, 2, 3, 4, 5]
mixed = ["hello", 42, True]

1.2.2 访问和修改列表元素

通过索引访问或修改元素,索引从 0 开始

fruits = ["apple", "banana", "cherry"]
​
# 访问元素
print(fruits[0])  # 输出 "apple"
print(fruits[-1])  # 输出 "cherry"
​
# 修改元素
fruits[1] = "blueberry"
print(fruits)  # 输出 ['apple', 'blueberry', 'cherry']

1.2.3 列表常用方法

方法

描述

示例

append(element)

添加元素到列表末尾

fruits.append("orange")

insert(index, elem)

在指定位置插入元素

fruits.insert(1, "pear")

remove(element)

删除第一个匹配的元素

fruits.remove("banana")

pop(index)

删除并返回指定索引的元素

fruits.pop(0)

count(element)

返回某个元素在列表中的出现次数

fruits.count("apple")

sort()

对列表进行排序

numbers.sort()

reverse()

反转列表顺序

numbers.reverse()


1.3 列表推导式

列表推导式是生成列表的简洁方式。

# 创建一个包含1到10的平方的列表
# 正常版本
squares = []
for x in range(1, 11):
    squares.append(x**2)
print(squares)  # 输出 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
​
​
# 推导式版本
squares = [x**2 for x in range(1, 11)]
print(squares)  # 输出 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

2. 元组

2.1 什么是元组

  • 元组(tuple)是一个有序的、不可变的集合

  • 使用小括号 () 定义,元素之间用逗号 , 分隔


2.2 元组操作

2.2.1 创建元组

# 空元组
empty_tuple = ()
​
# 单元素元组(注意逗号)
single_element_tuple = (42,)
​
# 多元素元组
coordinates = (10, 20, 30)
fruits = ("apple", "banana", "cherry")

2.2.2 访问元组元素

元组的访问方式与列表类似,使用索引

fruits = ("apple", "banana", "cherry")
​
# 访问元素
print(fruits[0])  # 输出 "apple"
print(fruits[-1])  # 输出 "cherry"

2.2.3 元组不可变性

元组中的元素一旦定义,就无法修改

fruits = ("apple", "banana", "cherry")
# fruits[0] = "pear"  # 会报错:TypeError: 'tuple' object does not support item assignment

2.3 元组的特殊方法

方法

描述

示例

count(element)

返回元素出现的次数

fruits.count("apple")

index(element)

返回元素的索引

fruits.index("banana")


3. 字典

3.1 什么是字典

  • 字典(dict)是一个无序的、可变的键值对集合

  • 使用大括号 {} 定义,键和值之间用冒号 : 分隔

person = {
    "name": "Alice",
    "age": 25,
    "city": "New York"
}

3.2 字典操作

3.2.1 访问和修改字典

person = {"name": "Alice", "age": 25}
​
# 访问值
print(person["name"])  # 输出 "Alice"
print(person.get("age"))  # 输出 25
​
# 修改值
person["age"] = 30
print(person)  # 输出 {'name': 'Alice', 'age': 30}

3.2.2 添加和删除键值对

# 添加键值对
person["gender"] = "Female"
​
# 删除键值对
del person["age"]

3.2.3 字典常用方法

方法

描述

示例

keys()

返回所有键

person.keys()

values()

返回所有值

person.values()

items()

返回所有键值对

person.items()

pop(key)

删除并返回指定键的值

person.pop("name")

update(dict2)

用另一个字典更新当前字典

person.update({"city": "LA"})


3.3 遍历字典

person = {"name": "Alice", "age": 30}
​
for key, value in person.items():
    print(f"{key}: {value}")

运行结果

name: Alice
age: 30

4. 集合

4.1 什么是集合

  • 集合(set)是一个无序的、不重复的元素集合

  • 使用大括号 {} 定义,或通过 set() 函数创建


4.2 集合操作

4.2.1 创建集合

# 创建集合
fruits = {"apple", "banana", "cherry"}
numbers = set([1, 2, 2, 3, 4])

4.2.2 添加和删除元素

方法

描述

示例

add(element)

添加元素到集合

fruits.add("orange")

remove(element)

删除指定元素(若不存在则报错)

fruits.remove("banana")

discard(element)

删除指定元素(若不存在不报错)

fruits.discard("banana")

clear()

清空集合

fruits.clear()


4.3 集合运算

集合支持常见的运算

运算符/方法

描述

示例

&intersection

交集,返回两个集合的共同元素

set1 & set2

|union

并集,返回两个集合的所有元素

set1 | set2

-difference

差集,返回只在第一个集合中的元素

set1 - set2

^symmetric_difference

对称差集,不在两者共同的元素

set1 ^ set2

add()

向集合中添加一个元素

set1.add(3)

remove()

移除集合中的一个元素,元素不存在时引发异常

set1.remove(3)

discard()

移除集合中的一个元素,元素不存在时不会引发异常

set1.discard(3)

pop()

移除并返回集合中的一个随机元素

set1.pop()

clear()

清空集合

set1.clear()

copy()

返回集合的一个浅拷贝

set1.copy()


4.4 遍历集合

fruits = {"apple", "banana", "cherry"}
​
for fruit in fruits:
    print(fruit)

运行结果:(顺序可能不同)

apple
banana
cherry

总结对比

数据结构

特点

适用场景

列表

有序、可重复、可变

存储有序数据,支持频繁的增删改查

元组

有序、不可变

存储固定数据,例如地理坐标等

字典

无序、键值对存储、键唯一、可变

快速查找关联关系的数据,例如配置文件

集合

无序、不重复、可变

去重、集合运算