Python中的列表推导式是什么?怎么用?

1 个回答|248 次阅读
Coco老师 - 公众号:量位学堂Qbit编程
擅长:编程教育

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

示例:

根据fruits列表,创建一个newlist,其中仅包含名称中带有字母“a”的项。

如果没有列表推导式,你将不得不写一个包含条件判断的语句:

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 = [表达式 for 迭代变量 in 可迭代对象 if 条件表达式]

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

1、条件表达式类似于一个筛选器,它将只迭代那些符合条件的元素。

例如:

newlist = [x for x in fruits if x != "apple"]

如果 x != “apple” 则条件将返回除 “apple” 以外的所有元素,使新列表包含除 “apple” 之外的所有元素。

【if 条件表达式】是可以省略的,例如:

newlist = [x for x in fruits]

2、可迭代对象 可以是任何可迭代对象,比如列表、元组、集合等。

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

newlist = [x for x in range(10)]

仅接受小于 5 的数字:

newlist = [x for x in range(10) if x < 5]

3、表达式 是迭代中的当前项,同时也是结果。

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

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]

“如果不是banana,则加入newlist,如果是banana则将orange加入newlist”。