首页  

Python3 列表(list) 元组(tuple)字典(dict)集合(set)使用     所属分类 python 浏览量 19
列表(list) 元组(tuple)字典(dict)集合(set)


数据结构        有序性   可变性    唯一性 访问方式    典型应用
列表(List)    ✅      ✅        ❌     索引       动态数据存储、有序操作
元组(Tuple)   ✅      ❌        ❌     索引       不可变数据、函数返回多值
字典(Dict)    ❌      ✅        ✅    (键)键	  快速查找、键值映射
集合(Set)     ❌      ✅        ✅     无         去重、集合运算、成员检测




1. 列表(List)
列表是可变的、有序的数据结构,支持任意类型元素

# 创建列表
fruits = ['apple', 'banana', 'cherry']  # 直接初始化
numbers = list(range(5))  # 使用 list() 构造函数
mixed = [1, 'hello', True, [2, 4]]  # 混合类型元素

# 基本操作
fruits.append('date')  # 添加元素到末尾
fruits.insert(1, 'berry')  # 在指定位置插入元素
fruits.remove('cherry')  # 删除指定元素
popped = fruits.pop()  # 删除并返回最后一个元素
print(f"列表长度: {len(fruits)}")  # 输出: 3

# 索引与切片
print(fruits[0])  # 输出: apple
print(fruits[-1])  # 输出: banana (负索引表示从后往前)
print(fruits[1:3])  # 输出: ['berry', 'banana'] (切片: [start, end))

# 常用方法
fruits.sort()  # 原地排序
print(fruits)  # 输出: ['apple', 'banana', 'berry']
reversed_fruits = fruits[::-1]  # 反转列表
print(f"是否存在 'apple': {'apple' in fruits}")  # 成员检测

# 列表推导式
squares = [x**2 for x in numbers]  # 生成平方数列表
print(squares)  # 输出: [0, 1, 4, 9, 16]


my_list = [2, 3, 4]
my_list.insert(0, 1)  # 在第一个位置插入 1
print(my_list)  # 输出: [1, 2, 3, 4]
[1, 2, 3, 4]
print(my_list.pop())
4
my_list
[1, 2, 3]




2. 元组(Tuple)
元组是不可变的、有序的数据结构,常用于存储不可变的数据集合

# 创建元组
point = (3, 4)  # 直接初始化
colors = 'red', 'green', 'blue'  # 省略括号
single_element = (1,)  # 单元素元组需加逗号

# 基本操作
x, y = point  # 解包
print(f"x={x}, y={y}")  # 输出: x=3, y=4

# 索引与切片(与列表类似)
print(colors[0])  # 输出: red
print(colors[1:])  # 输出: ('green', 'blue')

# 不可变性(修改会报错)
try:
    colors[0] = 'yellow'  # TypeError: 'tuple' object does not support item assignment
except TypeError as e:
    print(f"错误: {e}")

# 常用方法
print(f"元素 'red' 的索引: {colors.index('red')}")  # 输出: 0
print(f"元素 'green' 出现次数: {colors.count('green')}")  # 输出: 1

# 应用场景:函数返回多值
def get_name_and_age():
    return 'Alice', 25

name, age = get_name_and_age()
print(f"{name} is {age} years old.")  # 输出: Alice is 25 years old.




3. 字典(Dict)
字典是可变的、无序的键值对集合,通过键快速查找值


# 创建字典
person = {
    'name': 'Bob',
    'age': 30,
    'city': 'New York'
}  # 直接初始化
empty_dict = dict()  # 使用 dict() 构造函数

# 基本操作
person['job'] = 'Engineer'  # 添加新键值对
person['age'] = 31  # 修改现有值
del person['city']  # 删除键值对
print(f"字典长度: {len(person)}")  # 输出: 3

# 访问值
print(person['name'])  # 输出: Bob
print(person.get('age', 0))  # 安全获取值,默认值为 0

# 常用方法
keys = person.keys()  # 获取所有键
values = person.values()  # 获取所有值
items = person.items()  # 获取所有键值对
print(f"是否存在键 'job': {'job' in person}")  # 键存在检测

# 字典推导式
squares_dict = {x: x**2 for x in range(5)}  # 生成平方数字典
print(squares_dict)  # 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

# 遍历字典
for key, value in person.items():
    print(f"{key}: {value}")




4. 集合(Set)
集合是可变的、无序的、唯一的元素集合,常用于去重和成员检测

# 创建集合
fruits_set = {'apple', 'banana', 'cherry'}  # 直接初始化
empty_set = set()  # 注意:{} 是字典,不是集合!
numbers_set = set([1, 2, 2, 3, 3, 3])  # 从列表创建(自动去重)
print(f"去重后的集合: {numbers_set}")  # 输出: {1, 2, 3}

# 基本操作
fruits_set.add('date')  # 添加元素
fruits_set.remove('cherry')  # 删除元素
print(f"集合长度: {len(fruits_set)}")  # 输出: 3

# 集合运算
A = {1, 2, 3}
B = {3, 4, 5}
union = A | B  # 并集: {1, 2, 3, 4, 5}
intersection = A & B  # 交集: {3}
difference = A - B  # 差集: {1, 2}
symmetric_diff = A ^ B  # 对称差集: {1, 2, 4, 5}

# 成员检测与子集判断
print(f"是否存在 'apple': {'apple' in fruits_set}")  # 输出: True
print(f"A 是否是 B 的子集: {A.issubset(B)}")  # 输出: False

# 集合推导式
squares_set = {x**2 for x in range(5)}  # 生成平方数集合
print(squares_set)  # 输出: {0, 1, 4, 9, 16}




5. 综合应用示例
结合四种数据结构解决实际问题:统计文本中单词出现频率

text = "hello world hello python world code"
words = text.split()  # 分割为单词列表

# 使用字典统计词频
word_count = {}
for word in words:
    word_count[word] = word_count.get(word, 0) + 1

# 输出统计结果(按频率排序)
sorted_words = sorted(word_count.items(), key=lambda x: x[1], reverse=True)
for word, count in sorted_words:
    print(f"{word}: {count}")

# 提取唯一单词(使用集合去重)
unique_words = set(words)
print(f"唯一单词: {unique_words}")



sorted() 函数对字典的 items() 进行排序,返回一个由元组组成的列表 student_scores = {"Alice": 85, "Bob": 72, "Charlie": 90, "David": 72} # 按值降序排序,返回元组列表 sorted_by_value = sorted(student_scores.items(), key=lambda item: item[1],reverse=True ) print(sorted_by_value) # [('Charlie', 90), ('Alice', 85), ('Bob', 72), ('David', 72)]

上一篇     下一篇
Mac笔记本大模型本地化部署

向量数据库 基本概念 技术原理 选型指南

python3 实用代码

向量数据库在 RAG 检索增强生成中的应用

向量数据库相关的核心概念和术语

向量数据库选型