1 个回答|278 次阅读
当我们想要基于现有列表的值创建新列表时,列表推导式提供了更短的语法。
示例:
根据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”。
请先 登录 后评论