目录

Python - 列表推导


列表推导

当您想要基于现有列表的值创建新列表时,列表推导提供更短的语法。

例子:

基于水果列表,您需要一个新列表,其中仅包含名称中带有字母 "a" 的水果。

如果没有列表推导,你将不得不写一个for里面有条件测试的语句:

示例

fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []

for x in fruits:
  if "a" in x:
    newlist.append(x)

print(newlist)
亲自试一试 »

通过列表推导,您只需一行代码即可完成所有这些操作:

示例

fruits = ["apple", "banana", "cherry", "kiwi", "mango"]

newlist = [x for x in fruits if "a" in x]

print(newlist)
亲自试一试 »


语法

newlist = [ expression for item in iterable if condition == True]

返回值是一个新列表,保持旧列表不变。


健康)状况

这个条件就像一个过滤器,只接受评估的项目True

示例

仅接受非 "apple" 的项目:

newlist = [x for x in fruits if x != "apple"]
亲自试一试 »

条件if x != "apple"将返回True对于除 "apple" 之外的所有元素,使新列表包含除 "apple" 之外的所有水果。

这个条件是可选的,可以省略:

示例

没有if陈述:

newlist = [x for x in fruits]
亲自试一试 »

可迭代

这个可迭代的可以是任何可迭代对象,例如列表、元组、集合等。

示例

您可以使用range()创建可迭代的函数:

newlist = [x for x in range(10)]
亲自试一试 »

相同的示例,但有一个条件:

示例

仅接受小于 5 的数字:

newlist = [x for x in range(10) if x < 5]
亲自试一试 »

表达

这个表达是迭代中的当前项,但它也是结果,您可以在它像新列表中的列表项一样结束之前对其进行操作:

示例

将新列表中的值设置为大写:

newlist = [x.upper() for x in fruits]
亲自试一试 »

您可以将结果设置为您喜欢的任何结果:

示例

将新列表中的所有值设置为“hello”:

newlist = ['hello' for x in fruits]
亲自试一试 »

这个表达还可以包含条件,不像过滤器,而是作为操纵结果的一种方式:

示例

返回 "orange" 而不是 "banana":

newlist = [x if x != "banana" else "orange" for x in fruits]
亲自试一试 »

这个表达在上面的例子中说:

"Return the item if it is not banana, if it is banana return orange"。