Python 简明教程
Python - List Comprehension
List Comprehension in Python
list comprehension 是一种创建列表的简洁方法。它类似于数学中的集合生成器符号。它用于基于现有的可迭代对象(例如列表、元组或字符串)定义 list ,并对可迭代对象中的每个元素应用一个表达式。
Syntax of Python List Comprehension
列表解析的基本语法如下:
new_list = [expression for item in iterable if condition]
其中,
-
expression 是可迭代对象中每个元素要应用的操作或转换。
-
item 是可迭代对象中每个元素的表示变量。
-
iterable 是要遍历的元素序列。
-
condition (optional) 是根据指定条件过滤元素的表达式。
Example of Python List Comprehension
假设我们要将字符串 “hello world” 中的所有字母转换为大写形式。使用列表解析,我们将遍历每个字符,检查它是否为字母,如果是,则将其转换为大写,从而生成一个大写字母列表:
string = "hello world"
uppercase_letters = [char.upper() for char in string if char.isalpha()]
print(uppercase_letters)
获得的结果显示如下:
['H', 'E', 'L', 'L', 'O', 'W', 'O', 'R', 'L', 'D']
List Comprehensions and Lambda
在 Python 中, lambda 是用于创建匿名函数的关键字。匿名函数是没有名字的定义的函数。这些函数使用 lambda 关键字创建,后面跟着逗号分隔的参数列表,然后是 : ,接着是要计算的表达式。
我们可以在解析中通过对解析中可迭代对象的每个元素应用 lambda 函数来使用具有 lambda 的列表解析,从而生成一个新列表。
Nested Loops in Python List Comprehension
Python 中的嵌套循环是另一个循环中的循环,其中对于外层循环的每次迭代,内层循环都会执行多次。
我们可以在列表解析中通过将一个循环放在另一个循环中来使用嵌套循环,从而简洁地从多次迭代中创建列表。
Conditionals in Python List Comprehension
Python 中的条件是指使用 “if”、“elif”和 “else” 等语句来根据某些条件控制代码流。它们允许你根据条件是计算为 “True” 还是 “False” 来执行不同的代码块。
我们可以在列表解析中通过在可迭代对象之后和循环之前包含它们来使用条件,这将在生成列表时根据指定条件从可迭代对象中筛选元素。
List Comprehensions vs For Loop
列表解析和 for 循环都用于迭代,但它们在语法和用法上有所不同。
列表解析类似于 Python 中创建列表的快捷方式。它们允许你通过对现有列表中的每个元素应用操作来生成一个新列表。
另一方面,for 循环是一种控制流语句,用来逐步迭代可迭代元素,为每个元素执行代码块。
Example Using For Loop
假设我们要分离字符串中的每个字母,并将所有非元音字母放入列表对象中。我们可以通过如下所示的 for 循环来做到这一点:
chars=[]
for ch in 'TutorialsPoint':
if ch not in 'aeiou':
chars.append(ch)
print (chars)
chars 列表对象显示如下:
['T', 't', 'r', 'l', 's', 'P', 'n', 't']