美文网首页
列表推导式

列表推导式

作者: 闲云野鹤_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