推导式也被称为解析式,是一种简洁高效的代码编写方式,可以用一行代码来创建列表、集合、字典等复杂数据结构。推导式是Python中独有的一种特性。Python共有三种推导式,分别是列表推导式、字典推导式和集合推导式。
1、列表推导式
列表推导式是指利用for循环创建列表。前面教程中介绍的for循环有着非常广泛的应用场景,也可以用来创建一个列表,而列表推导式就相当于for循环创建列表的简化版。
列表推导式的语法:用中括号“[]”括起来,中间使用for语句,后面跟着if语句用作判断,满足条件的传到for语句前面用作构建的列表。下面简单介绍列表推导式的用法:
b = [a for a in range(5)]
print(b)
执行以上代码,输出结果为:
[0, 1, 2, 3, 4]
上面的例子中,range(5)函数可创建一个从0到4的整数可迭代对象,但不包括5,再利用for循环和列表推导式创建新的列表,这种方式创建列表不仅代码简洁且优雅。下面介绍更复杂的列表推导式,例如:
动手练一练:
# in后面是字符串
list1 = [3 * a for a in "python"]
print(list1) # 输出 ['ppp', 'yyy', 'ttt', 'hhh', 'ooo', 'nnn']
# 带if条件语句的列表推导式
list2 = [b for b in range(6) if b % 2 != 0] # “b % 2 != 0”求b除以2且余数不等于0的数
print(list2) # 输出 [1, 3, 5]
执行以上代码,输出结果为:
['ppp', 'yyy', 'ttt', 'hhh', 'ooo', 'nnn']
[1, 3, 5]
列表推导式是Python的一种简洁而强大的语法功能,它可以简化常规的for循环代码,适合快速生成列表、过滤数据和转换数据。
2、字典推导式
字典推导式和列表推导式类似。字典推导式使用大括号{},且存放的是键值对。字典的元素是成对出现的,所以推导式定义的时候也是成对生成键值对。例如:
动手练一练:
a = {b: b*2 for b in range(5)}
print(a)
c = {v: k for k, v in a.items()}
print(c)
执行以上代码,输出结果为:
{0: 0, 1: 2, 2: 4, 3: 6, 4: 8}
{0: 0, 2: 1, 4: 2, 6: 3, 8: 4}
3、集合推导式
集合推导式与列表推导式比较,不再使用中括号,而是使用大括号{};与字典推导式比较,都是使用大括号,但不存放键值对,而是存放任意类型的对象。集合推导式类似集合,同样也会去除重复的元素,例如:
动手练一练:
a = {b for b in range(6) if b % 2 != 0} # “b % 2 != 0”求b除以2且余数不等于0的数
print(a)
执行以上代码,输出结果为:
{1, 3, 5}