Python 必知!字符串、列表、元组、字典、集合全对比,附超全案例

在 Python 编程的世界里,字符串、列表、元组、字典和集合是最基础却又至关重大的数据结构。无论是数据处理、算法实现,还是 Web 开发,它们都扮演着不可或缺的角色。不过,许多开发者在实际使用时,常常对这些数据结构的特性、适用场景感到困惑。本文将通过全面且深入的对比,结合大量案例,协助你彻底掌握这 5 大数据结构的奥秘。

一、数据结构的基础定义与创建方式

1. 字符串(str)

字符串是字符的有序集合,用于存储文本信息,在 Python 中可以使用单引号 '、双引号 ” 或三引号 '''、””” 来定义。

python

# 使用单引号定义
s1 = 'Hello, Python!'
# 使用双引号定义
s2 = "这是一个双引号字符串"
# 使用三引号定义多行字符串
s3 = '''
这是一个
多行
字符串
'''

2. 列表(list)

列表是一种有序且可变的数据结构,使用方括号 [] 来创建,元素之间用逗号分隔,元素类型可以不同。

python

# 包含整数、字符串、浮点数的列表
lst = [10, "apple", 3.14]
# 空列表
empty_lst = []

3. 元组(tuple)

元组同样是有序的数据结构,但它是不可变的,使用圆括号 () 来创建,不过在省略圆括号,仅用逗号分隔元素时,Python 也会将其视为元组。

python

# 包含不同类型元素的元组
tpl = (1, "banana", True)
# 省略圆括号的元组
tpl2 = 2, "cherry", False
# 空元组
empty_tpl = ()

4. 字典(dict)

字典是以键值对形式存储数据的可变数据结构,使用花括号 {} 来创建,键和值之间用冒号 : 分隔,键必须是唯一且不可变的。

python

# 存储学生信息的字典
student = {
    "name": "Alice",
    "age": 20,
    "major": "Computer Science"
}
# 空字典
empty_dict = {}

5. 集合(set)

集合是无序且元素唯一的可变数据结构,使用花括号 {} 或 set() 函数来创建,注意使用 {} 创建空数据结构时,默认是字典,创建空集合需用 set() 函数。

python

# 包含整数的集合
st = {1, 2, 3, 3}  # 实际存储为 {1, 2, 3}
# 空集合
empty_set = set()

二、核心特性对比

为了更直观地展示这些数据结构的差异,我们通过以下表格进行对比:

特性

字符串(str)

列表(list)

元组(tuple)

字典(dict)

集合(set)

定义方式

'text'、”text”、'''text'''

[1, 'a', 2.0]

(1, 'b', 3)

{'key': 'value'}

{1, 2, 3}

可变性

不可变

可变

不可变

可变

可变

有序性

有序

有序

有序

无序(Python 3.7+ 保持插入顺序)

无序

元素唯一性

不要求

不要求

不要求

键唯一

元素唯一

访问方式

索引、切片

索引、切片

索引、切片

键访问

成员检测

典型应用场景

文本处理

数据动态存储

固定数据存储

键值对快速查询

去重、集合运算

三、详细功能与操作案例

1. 可变性操作

  • 字符串:由于字符串不可变,若要修改字符串,需要重新创建一个新的字符串。

python

s = "hello"
# 以下操作会报错,由于字符串不可变
# s[0] = 'H' 
# 正确的修改方式
s = 'H' + s[1:]
print(s)  # 输出:Hello
  • 列表:列表支持添加、删除和修改元素。

python

lst = [1, 2, 3]
# 修改元素
lst[1] = 20
# 添加元素
lst.append(4)
# 删除元素
del lst[0]
print(lst)  # 输出:[20, 3, 4]
  • 元组:元组不可变,无法直接修改元素。

python

tpl = (1, 2, 3)
# 以下操作会报错
# tpl[1] = 20 
  • 字典:字典可以方便地修改、添加和删除键值对。

python

dct = {'name': 'Bob', 'age': 25}
# 修改值
dct['age'] = 26
# 添加键值对
dct['city'] = 'Beijing'
# 删除键值对
del dct['name']
print(dct)  # 输出:{'age': 26, 'city': 'Beijing'}
  • 集合:集合可以添加和删除元素。

python

st = {1, 2, 3}
# 添加元素
st.add(4)
# 删除元素
st.remove(2)
print(st)  # 输出:{1, 3, 4}

2. 访问与遍历

  • 字符串:通过索引访问单个字符,使用切片获取子串,常使用 for 循环遍历。

python

s = "python"
print(s[2])  # 输出:t
print(s[1:4])  # 输出:yth
for char in s:
    print(char)
  • 列表:支持索引、切片访问,可使用多种方式遍历。

python

lst = [10, 20, 30, 40]
print(lst[1])  # 输出:20
print(lst[1:3])  # 输出:[20, 30]
# 使用 for 循环遍历
for num in lst:
    print(num)
# 使用 while 循环遍历
index = 0
while index < len(lst):
    print(lst[index])
    index += 1
  • 元组:访问方式与列表类似,但不能通过切片修改。

python

tpl = (1, 2, 3, 4)
print(tpl[2])  # 输出:3
print(tpl[1:3])  # 输出:(2, 3)
  • 字典:通过键访问值,使用 keys()、values() 和 items() 方法遍历。

python

dct = {'name': 'Charlie', 'age': 30, 'gender':'male'}
print(dct['name'])  # 输出:Charlie
# 遍历键
for key in dct.keys():
    print(key)
# 遍历值
for value in dct.values():
    print(value)
# 遍历键值对
for key, value in dct.items():
    print(key, value)
  • 集合:主要通过成员检测和 for 循环遍历。

python

st = {1, 2, 3, 4}
print(3 in st)  # 输出:True
for element in st:
    print(element)

3. 典型应用场景

  • 字符串:处理文本文件内容、网页爬虫获取的文本数据、格式化输出等。

python

# 从文件中读取文本并统计单词数量
with open('text.txt', 'r', encoding='utf-8') as file:
    content = file.read()
    words = content.split()
    print(f"单词数量: {len(words)}")
  • 列表:存储用户输入的数据、管理任务队列、实现栈和队列等数据结构。

python

# 模拟任务队列
task_queue = []
task_queue.append("任务1")
task_queue.append("任务2")
while task_queue:
    current_task = task_queue.pop(0)
    print(f"正在处理任务: {current_task}")
  • 元组:表明坐标点、函数返回多个值、保护数据不被意外修改。

python

# 函数返回多个值
def get_person_info():
    return "David", 28, "Engineer"

name, age, job = get_person_info()
print(name, age, job)
  • 字典:存储配置信息、数据库记录、统计数据。

python

# 统计文本中单词出现的次数
text = "apple banana apple orange banana apple"
word_count = {}
words = text.split()
for word in words:
    word_count[word] = word_count.get(word, 0) + 1
print(word_count)
  • 集合:去除重复数据、计算集合的交集、并集、差集。

python

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
# 交集
print(set1 & set2)  # 输出:{3, 4}
# 并集
print(set1 | set2)  # 输出:{1, 2, 3, 4, 5, 6}
# 差集
print(set1 - set2)  # 输出:{1, 2}

通过以上全面的对比和丰富的案例,信任你对 Python 中的字符串、列表、元组、字典和集合有了更深入的理解。在实际编程中,根据不同的需求选择合适的数据结构,将大大提高代码的效率和可读性。

Python 必知!字符串、列表、元组、字典、集合全对比,附超全案例

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
大微功效配方化妆品开发的头像 - 鹿快
评论 共2条

请登录后发表评论