如是我闻:List Comprehension,中文称为列表推导式,是Python中一种非常简洁且高效的构建列表(list)的方法。学习他的主要原因是因为帅,列表推导式可以使用单个表达式生成新列表,并且支持条件筛选。
列表推导式的基本语法是:
[表达式 for 项 in 可迭代对象 if 条件]
这里的组成部分包括:
-
表达式:这是你希望每个列表项应该有的形式。它可以是一个简单的表达式,比如
x
,或者是更复杂的表达式,比如x**2
或其他任何Python表达式。 -
for 项 in 可迭代对象:这是一个循环语句,用于迭代可迭代对象(如列表、元组、集合等)。
-
if 条件(可选):这是一个筛选条件,只有满足条件的项才会被包括在新的列表中。
示例
基本示例:
生成0到9的平方数列表:
squares = [x**2 for x in range(10)]
带条件的示例:
只生成偶数的平方数列表:
even_squares = [x**2 for x in range(10) if x % 2 == 0]
在这个例子中,x**2
是表达式,for x in range(10)
是循环迭代部分,if x % 2 == 0
是条件筛选部分,确保只有当 x
为偶数时,其平方数才会被加入到新列表中。
列表推导式提供了一种非常简洁的方式来创建列表,特别是当你需要从一个已有的列表或任何可迭代对象中根据某些条件筛选或变换元素时。
下面是更多的示例来帮助我们理解
1. 将摄氏度转换为华氏度
假设我们有一个包含多个摄氏度温度的列表,我们想要将其转换为华氏度。
celsius = [0, 10, 20, 30, 40, 50]
fahrenheit = [((9/5) * temp + 32) for temp in celsius]
print(fahrenheit)
这段代码会输出 [32.0, 50.0, 68.0, 86.0, 104.0, 122.0]
,即摄氏度对应的华氏度温度。
2. 提取字符串列表中的所有元音字母
如果我们有一个字符串列表,想要从每个字符串中提取元音字母,可以使用列表推导式结合嵌套循环来实现。
words = ['Hello', 'World', 'Python', 'List']
vowels = [letter for word in words for letter in word if letter.lower() in 'aeiou']
print(vowels)
这将输出所有字符串中的元音字母列表:['e', 'o', 'o', 'o', 'o', 'i']
。
3. 列表中元素的类型转换
列表推导式也可以用来对列表中的每个元素进行类型转换。比如,将字符串列表转换成整数列表。
str_numbers = ['1', '2', '3', '4', '5']
int_numbers = [int(x) for x in str_numbers]
print(int_numbers)
这段代码会输出 [1, 2, 3, 4, 5]
,即字符串被转换成了整数。
4. 生成两个列表的笛卡尔积
假设我们有两个列表,需要生成它们的笛卡尔积(即每个列表中的每个元素与另一个列表中的每个元素组合的所有可能性)。
colors = ['红', '绿', '蓝']
objects = ['车', '书', '笔']
combinations = [(color, obj) for color in colors for obj in objects]
print(combinations)
这将输出一个元组列表,展示了所有颜色和物体的组合。
5. 嵌套列表推导式
列表推导式也可以嵌套使用,比如,我们想要将一个二维列表(矩阵)平铺成一维列表。
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [num for row in matrix for num in row]
print(flattened)
这段代码会输出 [1, 2, 3, 4, 5, 6, 7, 8, 9]
,即将二维列表平铺成了一维列表。
我们可以看到列表推导式是真的帅
非常的有品
以上