zoukankan      html  css  js  c++  java
  • Python容器类型的过滤和解析技巧

    前言

    原博文:https://blog.csdn.net/wingforlearn/article/details/90272146

    讲述了诸多python技巧,我才读少许就觉得对我这个python小白代码的优化受益匪浅。

    美中不足的是只有代码,而且是python2的,其中有些语法需要相应自己转换到python3的版本,并且代码的具体意义需要自己花功夫去理解,但理解了之后你就会和我一样感叹这些技巧的精妙。

    这篇博文只挑出其中有关于容器类型的解析和过滤技巧,主要是怕自己忘(所以写下来的也是我自己懂就好了)。

    列表解析

    # 列表解析
    from random import randint
    
    data = [randint(-10, 10) for i in range(12)]
    filter(lambda x: x >= 0, data) 
    

    代码的功能是随机生成12个数,每个数都在(-10,10)之间,并且将这12个数放入data列表。再筛选出其中大于等于0的元素,将这些元素以迭代器对象的形式返回。

    首先是从random库中载入了一个randint的方法,它是用来生成随机整数的,并且你可以定这个随机整数的生成范围。然后构造了一个列表,这个列表有十二个元素,每个元素都在(-10,10)之间随机生成,生成完毕后装入列表,装满12个元素后,这个列表赋值给data。

    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。

    值得注意的是,这里的返回的迭代器对象,不能直接输出,需要用到for循环。

    如要直接输出,用list转换后再输出。

    a=list(filter(lambda x: x >= 0, data)) #转为列表就可以直接输出了。
    

    字典解析

    #字典解析
    d = {x: randint(60, 100) for x in range(10)}
    
    d_new={k: v for k, v in d.items() if v > 90} #这是一个字典
    

    代码的功能是:生成10个key:value形式的元素,每个元素中由x充当key,每个key对应的value则从(60,100)中随机生成,并将这十个元素放入字典d。随后过滤出所有value>90的元素,并将其所在的元素(key:value形式)装入字典d_new。

    集合解析

    # 集合解析
    data = [randint(-10, 10) for i in range(12)]
    s = set(data)
    s_new={x for x in s if x % 3 == 0}
    

    代码的功能是:随机生成12个数,每个数都在(-10,10)之间,并且将这12个数放入data列表。再将data列表强转成集合s。最后从集合s中挑选出可以整除3的元素放入新的集合s_new。

    #值得注意的是,列表形式的构造可以使用以下方法
    a=[randint(-10, 10) for i in range(12)] #构造完毕后这是一个列表
    type(a)='list'
    
    
    #而集合形式
    a=[randint(-10, 10) for i in range(12)] #构造完毕后这是一个迭代器
    type(a)='generator'
    

    剩下的就不解释了,这么聪明的你一定看得懂。

  • 相关阅读:
    matplotlib 进阶之origin and extent in imshow
    Momentum and NAG
    matplotlib 进阶之Tight Layout guide
    matplotlib 进阶之Constrained Layout Guide
    matplotlib 进阶之Customizing Figure Layouts Using GridSpec and Other Functions
    matplotlb 进阶之Styling with cycler
    matplotlib 进阶之Legend guide
    Django Admin Cookbook-10如何启用对计算字段的过滤
    Django Admin Cookbook-9如何启用对计算字段的排序
    Django Admin Cookbook-8如何在Django admin中优化查询
  • 原文地址:https://www.cnblogs.com/Sheppard/p/11288942.html
Copyright © 2011-2022 走看看