Python字典生成式、集合生成式、生成器用法实例
Python是目前应用广泛的编程语言之一,其灵活性和可扩展性得到了广泛认可。本文将介绍Python中的字典生成式、集合生成式、生成器用法,它们是Python语言精简代码的有力工具,并且功能强大。
1. 字典生成式
Python中的字典生成式用{}括起来,格式如下:
{ key:value for key, value in expression if condition }
其中,key和value指字典中每个键值对的键和值,expression指生成键值对的表达式,而condition则是筛选条件(可选)。
字典生成式的效率和可读性比for循环要高,因为它可以一行代码代替多行代码。
1.1. 使用字典生成式生成新的字典
以下代码演示了如何使用字典生成式生成新的字典:
# 使用字典生成式生成新的字典
a = {'a': 1, 'b': 2, 'c': 3}
new_dict = {key:value for key, value in a.items() if key != 'c'}
print(new_dict)
输出结果为:
{'a': 1, 'b': 2}
代码中,使用字典生成式将原始字典a中的键值对复制到新字典中,同时去除了键为“c”的键值对。
1.2. 字典生成式中的条件筛选
以下代码演示了如何在字典生成式中使用条件筛选:
# 在字典生成式中使用筛选条件
a = {'a': 1, 'b': 2, 'c': 3}
new_dict = {key:value for key, value in a.items() if value > 1}
print(new_dict)
输出结果为:
{'b': 2, 'c': 3}
代码中,在字典生成式中使用了筛选条件,只有键值大于1的键值对被复制到了新字典中。
2. 集合生成式
Python中的集合生成式也用{}括起来,格式与字典生成式类似:
{ expression for value in iterable if condition }
其中,expression指集合中每个元素的表达式,value表示可迭代对象中的每个值,condition则是筛选条件(可选)。
集合生成式的结果与列表生成式不同,它只生成不重复的集合元素(即要求集合中不重复)。
2.1. 使用集合生成式生成新的集合
以下代码演示了如何使用集合生成式生成新的集合:
# 使用集合生成式生成新的集合
numbers = [1, 2, 3, 4, 5, 5]
new_set = {number for number in numbers if number > 2}
print(new_set)
输出结果为:
{3, 4, 5}
代码中,集合生成式从列表numbers中生成了一个新的集合,其中每个元素大于2,并且集合中不重复。
2.2. 集合生成式中的条件筛选
以下代码演示了如何在集合生成式中使用条件筛选:
# 在集合生成式中使用筛选条件
numbers = [1, 2, 3, 4, 5, 5]
new_set = {number for number in numbers if number % 2 == 0}
print(new_set)
输出结果为:
{2, 4}
代码中,在集合生成式中使用了筛选条件,只有偶数被复制到了新集合中。
3. 生成器
Python中的生成器是一个特殊的迭代器,使用yield关键字返回一个值,类似于函数中的return语句,但是会保留迭代器状态。
使用生成器相比于直接构建列表、元组等序列结构,可以节省内存空间。
3.1. 使用生成器生成数列
以下代码演示了如何使用生成器生成数列:
# 使用生成器生成数列
def fibonacci(n):
a, b = 0, 1
for i in range(n):
yield a
a, b = b, a + b
print(list(fibonacci(10)))
输出结果为:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
代码中,使用生成器fibonacci()生成斐波那契数列。
3.2. 使用生成器生成器表达式
Python中的生成器表达式也用()括起来,格式如下:
( expression for value in iterable if condition )
使用生成器表达式与使用生成器函数类似,但是更加简洁,代码更少。
以下代码演示了如何使用生成器表达式生成数列:
# 使用生成器表达式生成数列
numbers = (number for number in range(10) if number % 2 == 0)
print(list(numbers))
输出结果为:
[0, 2, 4, 6, 8]
代码中,使用生成器表达式生成了一个数列,其中每个元素是偶数。
总结
Python中的字典生成式、集合生成式和生成器是极为实用的语法,它们可以大大降低代码的复杂度,同时提升代码的空间效率和时间效率。
在使用这些语法时,我们需要注意编写简洁易读,同时保证代码的可维护性和稳健性。