Python数据结构详解

在数据科学领域,掌握Python语言及其数据结构是初学者和专业人士的必备技能。尽管Python提供了众多的数据结构,但大约80%的情况下,只使用其中的四种:列表、元组、字典集合。本文将探讨这些数据结构的基本特性、操作和使用场景,并比较它们之间的差异。

列表(Lists)

列表是有序的、可变的数据集合,用方括号[]包裹,值之间用逗号分隔。它们可以包含不同类型的数据,允许重复值,并且是可迭代的。

使用场景:列表通常用于存储属于同一类别的相似数据,例如水果列表、班级中学生的列表等。

# 创建一个花卉列表 flowers = ['Rose', 'Iris', 'Hyacinth', 'Lily', 'Tulip']

列表操作:包括访问、添加、修改、删除和清空列表元素。以下是对花卉列表的操作示例。

# 访问列表中的元素 print(flowers[1]) # 输出: Iris print(flowers[2:4]) # 输出: ['Hyacinth', 'Lily'] # 向列表中添加元素 flowers.append('Lotus') flowers.insert(3, 'Magnolia') flowers.extend(['Jasmine', 'Carnation']) # 从列表中移除/删除元素 del flowers[1] flowers.pop(0) flowers.remove('Lotus') # 替换列表中的元素 flowers[3] = 'Orchid' # 使用列表推导式替换值 flowers = ['Daffodil' if i == 'Lily' else i for i in flowers] # 对列表中的元素进行排序 flowers.sort()

列表的其他操作还包括清空列表和删除整个列表。

元组(Tuples)

元组是有序的、不可变的数据集合,用圆括号()包裹。不可变意味着它们不能被修改,不能添加或删除元素。

使用场景:元组适用于数据不应被更改的场景,例如存储地点的经纬度坐标。

# 创建一个邮编元组 pincodes = (500010, 500045, 500022, 500068, 500034)

元组操作:包括访问、排序和赋值元素。以下是对邮编元组的操作示例。

# 访问元组中的元素 print(pincodes[3]) # 输出: 500068 print(pincodes[0:4]) # 输出: (500010, 500045, 500022, 500068) # 对元组中的值进行排序 sorted(pincodes) # sorted返回一个新列表,包含排序后的值,不改变原始元组 # 元组赋值 a, b, c = (1, 2, 3) print(a) # 输出: 1 print(b) # 输出: 2 print(c) # 输出: 3 # 元组连接 tuple1 = (10, 20, 30) tuple2 = tuple1 + (40, 50, 60) # 连接

字典(Dictionaries)

字典是无序的、可变的数据集合,以键值对的形式存储数据,用花括号{}包裹。值可以是可变的和重复的,但键必须是唯一的和不可变的。

使用场景:字典适用于需要快速访问数据的场景,而无需遍历所有值,例如存储员工数据。

# 创建一个员工字典 Employee = {'Id': 1, 'Name': 'Tom', 'Age': 30, 'Education': 'Masters', 'Department': 'IT', 'Salary': 100000}

字典操作:包括访问、添加、修改、删除和清空字典元素。以下是对员工字典的操作示例。

# 访问字典中的元素 print(Employee['Name']) # 输出: Tom # 查找键是否存在 'Education' in Employee # 输出: True # 查看键 Employee.keys() # 输出: dict_keys(['Id', 'Name', 'Age', 'Education', 'Department', 'Salary']) # 查看值 Employee.values() # 输出: dict_values([1, 'Tom', 30, 'Masters', 'IT', 100000]) # 向字典中添加元素 Employee['Bonus'] = 'Yes' # 从字典中删除元素 del Employee['Bonus'] Employee.pop('Salary') Employee.popitem()

字典的其他操作还包括清空字典和删除整个字典。

# 创建一个类型集合 Genres = {"Fiction", "NonFiction", "Drama", "Poetry"} # 向集合中添加元素 Genres.add("Folktale") Genres.update(['Horror', 'Distopian', 'SciFi']) # 从集合中移除元素 Genres.remove("Poetry") Genres.discard("Thriller") # 对集合进行数学操作 Set1 = {1, 2, 3, 4, 5} Set2 = {4, 5, 6, 7, 8} Set1 & Set2 # 交集 Set1.intersection(Set2) # 交集 Set1.union(Set2) # 并集 Set3 = {1, 2, 3} Set3.issubset(Set1) # 子集 Set1.issuperset(Set3) # 超集 Set1.difference(Set2) # 差集
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485