zoukankan      html  css  js  c++  java
  • 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,那说明你今天没啥进步...
    
    ——涛哥
    
  • 相关阅读:
    Spark SQL (一)
    hdu 3729 最大匹配
    1350 Taxi Cab Scheme DAG最小路径覆盖
    hdu 2768 Cat vs. Dog 最大独立集 巧妙的建图
    hdu 2444 The Accomodation of Students 判断是否构成二分图 + 最大匹配
    hdu1507 最大匹配
    二分图的最大独立集 最大匹配解题 Hopcroft-Karp算法
    有向无环图的最小路径覆盖 二分图模型解题
    二分图最小点覆盖
    hdu3488 / hdu3435 / hdu1853 最小费用最大流 圈 拆点
  • 原文地址:https://www.cnblogs.com/wwho/p/15183689.html
Copyright © 2011-2022 走看看