• 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)函数
  • 相关阅读:
    11 改进版通过队列实现一个生产者消费者模型
    13 精进版SVIP版通过队列实现一个生产者消费者模型
    12 再次改进版通过队列实现一个生产者消费者模型
    31 进程
    join方法
    30 进程 线程
    进程传参方式和创建方式2
    设计模式 单例模式
    设计模式 抽象工厂模式
    设计模式 简单工厂模式
  • 原文地址:https://www.cnblogs.com/daniel-niu/p/10838411.html
Copyright © 2020-2023  润新知