Python中的列表推导式(List Comprehension)是一种优雅且简洁的方式,用于快速生成列表。它是Python迭代机制的一种扩展,允许你使用一行代码就能根据已有的列表或可迭代对象(如元组、字符串、集合等)创建新的列表。列表推导式由方括号包围,内部包含一个表达式,后面跟随一个for语句,还可以包含if条件语句和其他for循环。
列表推导式的基本结构:
python复制代码
[expression for item in iterable] |
或者包含if条件的结构:
python复制代码
[expression for item in iterable if condition] |
更复杂的结构可以包含嵌套的for循环和多个if条件。
列表推导式的例子:
假设我们有一个整数列表,并且想要生成一个新列表,其中包含原列表中每个数字的平方。
使用普通的for循环和append方法,我们可以这样做:
python复制代码
original_list = [1, 2, 3, 4, 5] | |
squared_list = [] | |
for num in original_list: | |
squared_list.append(num ** 2) | |
print(squared_list) # 输出: [1, 4, 9, 16, 25] |
现在,我们使用列表推导式来完成相同的任务:
python复制代码
original_list = [1, 2, 3, 4, 5] | |
squared_list = [num ** 2 for num in original_list] | |
print(squared_list) # 输出: [1, 4, 9, 16, 25] |
列表推导式不仅使代码更加简洁,而且通常执行速度也更快,因为它在内部使用了优化的迭代机制。
包含条件的列表推导式:
假设我们想从上述列表中筛选出偶数并平方它们,可以这样写:
python复制代码
original_list = [1, 2, 3, 4, 5, 6] | |
squared_evens = [num ** 2 for num in original_list if num % 2 == 0] | |
print(squared_evens) # 输出: [4, 16, 36] |
在这个例子中,列表推导式首先检查每个数字是否为偶数(num % 2 == 0
),如果是,则计算其平方并将其添加到新列表中。
嵌套列表推导式:
有时你可能需要从嵌套列表(即二维列表)中提取数据或生成新的嵌套列表。嵌套列表推导式可以帮助你完成这个任务。
例如,假设你有一个嵌套列表,并且你想将所有内部列表的第一个元素提取到一个新列表中:
python复制代码
nested_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] | |
first_elements = [inner_list[0] for inner_list in nested_lists] | |
print(first_elements) # 输出: [1, 4, 7] |
或者,假设你想生成一个新的嵌套列表,其中只包含原始嵌套列表中每个子列表的偶数元素:
python复制代码
nested_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]] | |
evens_only = [[num for num in inner_list if num % 2 == 0] for inner_list in nested_lists] | |
print(evens_only) # 输出: [[2], [4, 6], [8, 10]] |
在这个例子中,我们有一个外层的列表推导式和一个内嵌的列表推导式。外层循环遍历原始嵌套列表中的每个子列表,而内层循环则负责筛选出每个子列表中的偶数元素。
列表推导式是Python中一种强大的功能,它使得创建和处理列表变得更加简单、直观和高效。掌握列表推导式是成为一名熟练Python程序员的关键技能之一。