• Python


    列表生成式

    一个用来生成列表的特定语法形式的表达式。可以对一组元素进行过滤或得到对列表元素进行处理后得到的结果,可以快速的根据已存在的可迭代对象推导出一个新的list。

    生成式的基本语法:

    [expression for iter_var in iterable]
    [expression for iter_var in iterable if cond_expr]
    


    第一种语法:

    首先迭代 iterable 里所有内容,每一次迭代,都把 iterable 里相应内容放到iter_var 中,
    再在表达式expression 中应用该 iter_var 的内容,最后用表达式的计算值生成一个列表。



    第二种语法:

    加入了判断语句,只有满足条件的内容才把 iterable 里相应内容放到 iter_var 中,再在表达式expression 中应用该 iter_var 的内容,
    最后用表达式的计算值生成一个列表。



    先从简单的例子开始:

    生成一个10个元素的数据,每个分别对应 1-10的两倍。

    按照平常基本的思路,定义一个空列表 a ,使用for 循环遍历1-10,遍历出来的数乘 2 ,通过append 追加到列表中。

    a = []
    for i in range(1, 11):
        a.append(i*2)
    print(a)
    


    使用列表生成式的做法:

    list = [x*2 for x in range(1, 11)]
    print(list)
    

    看生成式的语法:x 先进行遍历 1- 10,表达式为 x*2。



    带if判断:

    对一个列表里面的数据筛选,比如:[1, 9, -2, 4, -5, 11, -7, 3],找出大于0的数,按普通思路可以for循环挨个判断,符合条件的放到新的列表。

    l = [1, 9, -2, 4, -5, 11, -7, 3]
    a = []
    for i in l:
        print(i)
        if i > 0:
            a.append(i)
    print(a)
    


    使用列表生成式:

    l = [1, 9, -2, 4, -5, 11, -7, 3]
    d = [x for x in l if x >0]
    print(d)
    

    由此可见,列表生成式代码简洁高效。

    练习:
    生成一个100以内所有偶数的列表





    ------分割线------

    如果不觉得昨天的自己是个傻 x,那说明你今天没啥进步...
    
    ——涛哥
    
  • 相关阅读:
    算法导论4线性时间与暴力寻找最大子数组
    算法导论4.1DivideAndConquer寻找最大子数组
    算法导论2.3算法设计分治法合并排序
    算法导论第二章算法入门2.1 插入排序
    eclipse 从已经存在代码建工程
    centos6.3 eclipse cdt
    Cant open file /data/svn/dev/db/txn-current-lock: Permission denied的解决方法
    git命令的安装与github简单使用
    CentOS-6.3安装配置SVN
    github使用_转
  • 原文地址:https://www.cnblogs.com/wwho/p/15183689.html
Copyright © 2020-2023  润新知