Python入门【生成器推导式创建元组、字典、字典元素添加、修改、删除、序列解包、字典核心底层原理、集合 】(六)
发布人:shili8
发布时间:2025-02-15 01:02
阅读次数:0
**Python 入门:生成器、推导式、元组、字典、集合**
在 Python 中,生成器(Generator)、推导式(Comprehension)和元组(Tuple)、字典(Dictionary)以及集合(Set)是非常重要的数据结构。它们可以帮助我们简化代码,提高效率。
**1.生成器**
生成器是一种特殊类型的函数,它可以产生序列,而不需要一次性将所有元素都计算出来。这使得它特别适合处理大型数据集。
###例子:
def fibonacci(n): a, b =0,1 for _ in range(n): yield a a, b = b, a + bfib_gen = fibonacci(10) for num in fib_gen: print(num)
在这个例子中,我们定义了一个函数 `fibonacci`,它使用生成器来产生斐波那契数列。我们可以通过迭代器(Iterator)来访问这些数字。
###说明:
* `yield` 关键字用于将值返回给调用者,而不是像普通函数那样直接返回。
*生成器在每次被请求时都会计算下一个值,这使得它特别适合处理大型数据集。
**2. 推导式**
推导式是一种紧凑的语法结构,用于创建序列(如列表、元组或集合)或字典。它可以帮助我们简化代码,使其更易读和理解。
###例子:
# 创建一个列表numbers = [x for x in range(10)]
print(numbers) # [0,1,2,3,4,5,6,7,8,9]
# 创建一个元组fruits = ('apple', 'banana', 'cherry')
print(fruits) # ('apple', 'banana', 'cherry')
# 创建一个集合colors = {x for x in ['red', 'green', 'blue', 'yellow']}
print(colors) # {'red', 'green', 'blue', 'yellow'}
在这个例子中,我们使用推导式来创建列表、元组和集合。
###说明:
* 推导式的语法结构是 `expression for variable in iterable`,其中 `expression` 是要被计算的值, `variable` 是用于临时存储值的变量, `iterable` 是可迭代对象。
* 推导式可以用于创建各种类型的序列和字典。
**3. 元组**
元组是不可修改的序列,它们在 Python 中非常有用。它们可以帮助我们简化代码,使其更易读和理解。
###例子:
# 创建一个元组person = ('John', 'Doe',30)
print(person) # ('John', 'Doe',30)
# 访问元组中的元素print(person[0]) # Johnprint(person[1]) # Doeprint(person[2]) #30# 修改元组中的元素(不可以)
try:
person[0] = 'Jane'
except TypeError as e:
print(e) # 'tuple' object does not support item assignment在这个例子中,我们创建了一个元组,并尝试访问和修改其中的元素。
###说明:
* 元组是不可修改的序列,它们使用圆括号 `()` 来表示。
* 元组中的元素可以通过索引来访问,但不能修改。
**4. 字典**
字典是可修改的无序集合,它们在 Python 中非常有用。它们可以帮助我们简化代码,使其更易读和理解。
###例子:
# 创建一个字典person = {'name': 'John', 'age':30}
print(person) # {'name': 'John', 'age':30}
# 访问字典中的元素print(person['name']) # Johnprint(person['age']) #30# 修改字典中的元素person['age'] =31print(person) # {'name': 'John', 'age':31}
在这个例子中,我们创建了一个字典,并尝试访问和修改其中的元素。
###说明:
* 字典是可修改的无序集合,它们使用花括号 `{}` 来表示。
* 字典中的元素可以通过键来访问和修改。
**5. 序列解包**
序列解包是一种语法结构,用于将序列(如列表、元组或字符串)分解为多个变量。它可以帮助我们简化代码,使其更易读和理解。
###例子:
# 创建一个元组person = ('John', 'Doe',30)
print(person) # ('John', 'Doe',30)
# 使用序列解包来访问元组中的元素name, surname, age = personprint(name) # Johnprint(surname) # Doeprint(age) #30在这个例子中,我们使用序列解包来访问元组中的元素。
###说明:
* 序列解包的语法结构是 `variable1, variable2, ... = iterable`,其中 `variable1`, `variable2`, 等是用于临时存储值的变量, `iterable` 是可迭代对象。
* 序列解包可以用于将序列分解为多个变量。
**6. 字典核心底层原理**
字典在 Python 中使用哈希表(Hash Table)作为其底层数据结构。哈希表是一种高效的查找和存储键值对的数据结构。
###例子:
# 创建一个字典person = {'name': 'John', 'age':30}
print(person) # {'name': 'John', 'age':30}
# 使用哈希表来访问字典中的元素key = 'name'
value = person[key]
print(value) # John# 使用哈希表来修改字典中的元素person['age'] =31print(person) # {'name': 'John', 'age':31}
在这个例子中,我们使用哈希表来访问和修改字典中的元素。
###说明:
* 哈希表是一种高效的查找和存储键值对的数据结构。
* 字典在 Python 中使用哈希表作为其底层数据结构。
**7. 集合**
集合是无序且不重复的集合,它们在 Python 中非常有用。它们可以帮助我们简化代码,使其更易读和理解。
###例子:
# 创建一个集合colors = {'red', 'green', 'blue'}
print(colors) # {'red', 'green', 'blue'}
# 访问集合中的元素print('red' in colors) # Trueprint('yellow' in colors) # False# 修改集合中的元素(不可以)
try:
colors.add('yellow')
except TypeError as e:
print(e) # 'add()' requires1 positional argument(s), but2 were given在这个例子中,我们创建了一个集合,并尝试访问和修改其中的元素。
###说明:
* 集合是无序且不重复的集合,它们使用花括号 `{}` 来表示。
* 集合中的元素可以通过 `in` 关键字来访问,但不能修改。

