Python字典生成式、集合生成式、生成器用法实例

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中的字典生成式、集合生成式和生成器是极为实用的语法,它们可以大大降低代码的复杂度,同时提升代码的空间效率和时间效率。

在使用这些语法时,我们需要注意编写简洁易读,同时保证代码的可维护性和稳健性。

后端开发标签