美文网首页
列表推导式

列表推导式

作者: 闲云野鹤_23dd | 来源:发表于2021-01-17 19:03 被阅读0次

列表推导式

推导式

推导式(又称解析器),是 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

相关文章

网友评论

      本文标题:列表推导式

      本文链接:https://www.haomeiwen.com/subject/tgvjoktx.html