本教程涵盖了Python的基本数据结构—列表、元组、字典和集合。在5个步骤中学习它们的特点、用例和实际示例。
Python数据结构简介
无论你选择使用哪种编程语言来学习编程,你会发现有一些主要主题是你需要学习的。这些主题大致可以按顺序分为以下几个:语法(语言的词汇);命令(将词汇组合成有用的方式);流程控制(我们如何指导命令的执行顺序);算法(解决具体问题的步骤……为什么这个词变得如此困扰呢?);最后,数据结构(我们在算法执行期间用于数据操作的虚拟存储库,它们是一系列步骤)。
基本上,如果你想要通过将一系列命令组合到算法的步骤中来实现问题的解决方案,那么在某个时候,数据将需要被处理,而数据结构将成为必需品。这些数据结构提供了一种有效组织和存储数据的方式,对于创建快速、模块化的代码以及能够执行有用功能并具有良好扩展性非常重要。Python作为一种特定的编程语言,具有一系列内置的数据结构。
本教程将重点介绍这四种基本的Python数据结构:
除了基本数据结构外,Python还提供了更高级的结构,如堆、队列和链表,可以进一步提升你的编码能力。这些基于基础数据结构构建的高级结构可以实现更复杂的数据处理,并常用于专门的场景。但是,在这里你并不受限制,你可以将所有现有的结构用作实现自己结构的基础。然而,列表、元组、字典和集合的理解仍然是至关重要的,因为它们是更高级数据结构的基础。
本教程旨在提供对这些核心结构的清晰而简明的理解。当你开始Python之旅时,以下部分将引导你了解基本概念和实际应用。从创建和操作列表到利用集合的独特功能,本教程将为你提供在编码中取得成功所需的技能。
步骤1:在Python中使用列表
什么是 Python 中的列表?
Python中的列表是一种有序、可变的数据类型,可以存储各种对象,允许存在重复元素。列表是通过使用方括号[]来定义的,其中元素用逗号分隔。
例如:
fibs = [0, 1, 1, 2, 3, 5, 8, 13, 21]
列表非常有用于组织和存储数据序列。
创建列表
列表可以包含不同的数据类型,比如字符串、整数、布尔值等。例如:
mixed_list = [42, "Hello World!", False, 3.14159]
操作列表
可以访问、添加、修改和删除列表中的元素。例如:
# Access 2nd element (indexing begins at '0')
print(mixed_list[1])
# Append element
mixed_list.append("This is new")
# Change element
mixed_list[0] = 5
# Remove last element
mixed_list.pop(0)
有用的列表方法
一些方便的内置列表方法包括:
列表的实际示例
# Create shopping cart as a list
cart = ["apples", "oranges", "grapes"]
# Sort the list
cart.sort()
# Add new item
cart.append("blueberries")
# Remove first item
cart.pop(0)
print(cart)
输出:
['grapes', 'oranges', 'blueberries']
# Defining a tuple
my_tuple = (1, 2, 3, 4)
何时使用元组?
访问元组元素
访问元组中的元素的方式与访问列表元素的方式类似。 索引和切片的工作方式相同。
# Accessing elements
first_element = my_tuple[0]
sliced_tuple = my_tuple[1:3]
元组上的操作
因为元组是不可变的,所以许多列表操作都适用(或不适用)。 不过,你仍然可以执行一些操作:append()remove()
串联:使用运算符合并元组。+
concatenated_tuple = my_tuple + (5, 6)
repeated_tuple = my_tuple * 2
exists = 1 in my_tuple
count_of_ones = my_tuple.count(1)
index_of_first_one = my_tuple.index(1)
packed_tuple = 1, 2, 3
a, b, c = packed_tuple
# Tuple with mutable list
complex_tuple = (1, 2, [3, 4])
student = {"name": "Michael", "age": 22, "city": "Chicago"}
student = {"name": "Susan", "age": 23}
prices = {"milk": 4.99, "bread": 2.89}
# Access value by key
print(student["name"])
# Add new key-value
student["major"] = "computer science"
# Change value
student["age"] = 25
# Remove key-value
del student["city"]
scores = {"Francis": 95, "John": 88, "Daniel": 82}
# Add new score
scores["Zoey"] = 97
# Remove John's score
scores.pop("John")
# Get Daniel's score
print(scores.get("Daniel"))
# Print all student names
print(scores.keys())
numbers = {1, 2, 3, 4}
my_list = [1, 2, 3, 3, 4]
my_set = set(my_list) # {1, 2, 3, 4}
numbers.add(5)
numbers.remove(1)
A = {1, 2, 3, 4}
B = {2, 3, 5, 6}
# Union - combines sets
print(A | B)
# Intersection
print(A & B)
# Difference
print(A - B)
# Symmetric difference
print(A ^ B)
# Make a list of person names
names = ["John", "Mary", "Bob", "Mary", "Sarah"]
# Make a tuple of additional information (e.g., email)
additional_info = ("john@example.com", "mary@example.com", "bob@example.com", "mary@example.com", "sarah@example.com")
# Make set to remove duplicates
unique_names = set(names)
# Make dictionary of name-age pairs
persons = {}
for name in unique_names:
persons[name] = random.randint(20,40)
print(persons)
{'John': 34, 'Bob': 29, 'Sarah': 25, 'Mary': 21}