列表推导式
推导式
推导式(又称解析器),是 Python 独有的一种特性。使用推导式可以快速生成列表、元组、字典以及集合类型的数据,因此推导式又可细分为列表推导式、元组推导式、字典推导式以及集合推导式
列表推导式
列表推导式的语法格式如下:
[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]
此格式中,[if 条件表达式] 不是必须的,可以使用,也可以省略。
通过列表推导式的语法格式,明显会感觉到它和 for 循环存在某些关联。其实,除去 [if 条件表达式] 部分,其余各部分的含义以及执行顺序和 for 循环是完全一样的(表达式其实就是 for 循环中的循环体),即它的执行顺序如下所示:
for 迭代变量 in 可迭代对象
表达式
初学者可以这样认为,它只是对 for 循环语句的格式做了一下简单的变形,并用 [] 括起来而已,只不过最大的不同之处在于,列表推导式最终会将循环过程中,计算表达式得到的一系列值组成一个列表。
需求:如何快速生成一个0-100的列表
方式一:通过之前学过的循环来做
#while循环
list1=[]
i=0
while i < 100:
list1.append(i)
i += 1
print('list1的值为:',list1)
#for循环
1ist2=[]
for i in range(100):
list2.append(i)
print('list2的值为:',list2)`
更简单的方式:列表推导式
list3=[i for i in range(100)]
print('list3的值为:',list3)
# 打印结果
# 1ist3的值为:[0,1,2,3,4,5,6,7,……94,95,96,97,98,99]`
不仅如此,我们还可以在列表推导式中添加 if 条件语句,这样列表推导式将只迭代那些符合条件的元素。例如如下代码:
a_range=[0 , 1 , 4 , 9 , 16 , 25 , 36 , 49 , 64, 81]
b_list = [x * x for x in a_range if x % 2 == 0]
# a_list集合包含5个元素
print(b_list)`
第一行代码与程序一中第 3 行代码大致相同,只是为这里给列表推导式增加了 if 条件语句,这会导致推导式只处理 range 区间的偶数,因此程序生成的 b_list 只包含 5 个元素。
结果如下
[0 ,4 , 16, 36, 64]
练习:
使用列表推导式生成一个[0,5,10,15,20,…50]的列表
使用列表推导式生成一个[page1,page2,page3…page10]的列表
image.png
网友评论