zoukankan      html  css  js  c++  java
  • python 学习笔记(3)列表、集合和字典推导式

    利用推导式,可以很方便的从集合中过滤元素形成新的列表,

    expr for val in collection if condition

    例子,集合推导列表

    #推导式
    #集合转换列表
    a={"daniel","nba","chris","sfe","hr"}
    b=[my.upper() for my in a if len(my)>2 ]#长度大于2的变大写
    print(b)
    print(a)
    #输出结果 ['DANIEL', 'SFE', 'NBA', 'CHRIS']
    #输出结果 {'daniel', 'sfe', 'nba', 'chris', 'hr'}

    用相似的方法,还可以推导集合和字典。字典的推导式如下所示:

    dict_comp = {key-expr : value-expr for value in collection if condition}
     
    In [159]: loc_mapping = {val : index for index, val in enumerate(strings)}
    In [160]: loc_mapping
    Out[160]: {'a': 0, 'as': 1, 'bat': 2, 'car': 3, 'dove': 4, 'python': 5}
     

    集合的推导式与列表很像,只不过用的是尖括号:

    set_comp = {expr for value in collection if condition}
     
    In [156]: unique_lengths = {len(x) for x in strings}
    In [157]: unique_lengths
    Out[157]: {1, 2, 3, 4, 6}

    嵌套推导

    #嵌套推导,列表中包含列表,推导为一个列表
    all_data = [['John', 'Emily', 'Michael', 'Mary', 'Steven'],['Maria', 'Juan', 'Javier', 'Natalia', 'Pilar']]
    newlist=[name for names in all_data for name in names if len(name)>=6] #或者过滤名字中a出现多次的,name.count('a')>2
    print(newlist)
    #结果 ['Michael', 'Steven', 'Javier', 'Natalia']

    记住,for表达式的顺序是与嵌套for循环的顺序一样(而不是列表推导式的顺序):

    flattened = []
    for tup in some_tuples:
    for x in tup:
    flattened.append(x)
     
    下一篇学习python的函数相关,python学习笔记(4)函数
  • 相关阅读:
    Programming In Lua 第一章
    TCP/IP 第四、五章
    wireshark数据包分析实战 第三、四章
    [MFC.Windows程序设计(第2版) 第一章
    wireshark数据包分析实战 第二章
    C++PrimerPlus第6版 第四章——复合类型
    TCP/IP 第三章
    Linux命令行与脚本编程大全第一章
    Flink的并行度设置
    基于HttpClient的工具类HttpUtil
  • 原文地址:https://www.cnblogs.com/daniel-niu/p/10838411.html
Copyright © 2011-2022 走看看