1. 推导式概念
Python推导式
(comprehensions)是一种简洁而强大的语法,用于从已存在的数据(列表、元组、集合、字典等)中创建新的数据结构。推导式包括:
- 列表推导式
- 元组推导式
- 字典推导式
- 集合推导式
2. 列表推导式
列表推导式创建列表的方式更简洁。常见的用法为,对序列或可迭代对象中的每个元素应用某种操作,用生成的结果创建新的列表;或用满足特定条件的元素创建子序列。
例如:创建平方值的列表
squares = []
for x in range(10):
squares.append(x**2)
print(squares)
这段代码创建(或覆盖)变量 x,该变量在循环结束后仍然存在。
下述方法可以无副作用地计算平方列表:
# 1)第一种方式
squares = list(map(lambda x : x**2 in range(10)))
# 2) 第二种方式
squares = [x**2 for x in range(10)]
2.1 语法格式
列表推导式
(List comprehension)是一种在一行代码中创建和操作列表的简洁方式。
它的基本语法形式如下:
[expression for item in iterable if condition]
expression
是对item
的操作或表达式,可以是有返回值的函数。
2.item
是迭代变量,表示可迭代对象中的每个元素。iterable
是可迭代对象,如列表、元组、字符串等。condition
是一个可选的条件,用于过滤元素。
注意:列表推导式的方括号内包含以下内容:一个表达式,后面为一个 for
子句,然后,是零个或多个for
或 if
子句。结果是由表达式依据 for
和if
子句求值计算而得出一个新列表。
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
"""
上述推导式等同于:
combs = []
for x in [1,2,3]:
for y in [3,1,4]:
if x != y:
combs.append((x, y))
combs
"""
# 输出 [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
2.2 示例及应用
"""
筛选和转换数据:
列表推导式允许你根据特定的条件从一个列表中选择或转换元素,从而创建一个新的列表。例如,你可以过滤出所有的偶数或将列表中的字符串转换为大写。
"""
# 筛选偶数
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)
# 过滤出字符串列表中长度大于3的单词
words = ['python', 'is', 'awesome', 'and', 'fun']
long_words = [word for word in words if len(word)>=3]
print(long_words)
# 转换字符串为大写
words = ['hello', 'world', 'python']
upper_words = [word.upper() for word in words]
print(upper_words)
运行效果: