zoukankan      html  css  js  c++  java
  • 列表解析

    python中列表解析的语法:

        [expr for iter_var in iterable]

    这条语句的作用:for循环迭代 iterable 对象的所有条目,前面的 expr 应用于序列的每一个成员,最后的结果值是该表达式产生的列表。迭代变量 iter_var 并不需要是表达式的一部分。

    如要创建一个有10个在[-10,10]范围内的随机整数的列表,通常会用循环来做。而使用列表解析简单的多。

    //通过循环创建
    data=[]
    for i in xrange(10):
        data.append(randint(-10,10))
    
    //列表解析创建
    data=[randint(-10,10) for _ in xrange(10)]

    再比如 map() 的使用:

    1 //map函数
    2 map(lambda x: x**2,range(6))
    3 //[0,1,4,9,16,25]
    4 
    5 //列表解析
    6 [x**2 for x in range(6)]

    列表解析还可以结合 if 语句:

        [expr for iter_var in iterable if cond_expr] 

    这个语法在迭代时会选择满足条件表达式 cond_expr 的序列成员。如用列表解析代替 filter() 函数。

    //filter()
    seq=[11,10,9,6,5]
    filter(lambda x: x%2, seq)
    //[11,9,5]
    
    //列表解析
    [x for x in seq if x%2]
    //[11,9,5]

    python很早就支持函数式编程特性,如lambda,map(),filter() 等函数,使用列表解析可以把它们简化为一个列表解析句子,列表解析的效率比使用这些函数的效率要高很多。

    字典解析

    字典解析类似于列表解析,如下面创建一个字典和过滤字典的值大于90的item。

    //创建字典
    dic = { x: randint(60,100) for x in xrange(1,21)}
    //选择值大于90的项
    {k : v for k,v in dic.iteritems() if v>90}
  • 相关阅读:
    Qt -- 鼠标移入移出事件 enterEvent、leaveEvent
    QT -- QPainter介绍
    Qt -- 浅析QFontMetrics 获取字体宽度,高度
    函数声明后面的const用法
    QT -- 读取file数据/写数据到file
    QT -- QLineEdit按下回车键获取信息
    C++ -- fgets,fputs,fputc,fgetc总结
    QT -- QString / std::string转换为const char*
    C++ -- fopen函数用法
    HTML DOM树
  • 原文地址:https://www.cnblogs.com/mzct123/p/6125317.html
Copyright © 2011-2022 走看看