zoukankan      html  css  js  c++  java
  • Python强化训练笔记(一)——在列表,字典,集合中筛选数据

    列表,字典,集合中根据条件筛选数据,如下所示

    列表:[-10,2,2,3,-2,7,6,9] 找出所有的非负数

    字典:{1:90,2:55,3:87...} 找出所有值大于60的键值对

    集合:{2,3,8,6,7,5} 找出所有被3整除的数


    列表

    >>> from random import randint
    >>> data = [randint(-10,10) for x in xrange(10)]
    >>> data
    [-1, 8, -9, 9, 10, -2, 6, -8, -2, 10]

    对于列表来说,想要对其中的数值进行筛选,最先想到的应该是利用遍历

    >>> res = []
    >>> for x in data:
    >>>    if x >= 0:
    >>>        res.apend(x)
    >>> res
    [8,9,10,6,10]

     较为常用的方法还有使用过滤函数filter

    >>> filter(lambda x: x >= 0, data)
    [8,9,10,6,10]

    也可以使用列表生成式

    >>> [x for x in data if x >= 0]
    [8, 9, 10, 6, 10]

    对比这三种方法,开发中通常使用第三种,列表生成式,因为它的运行效率要比过滤函数filter高,而对于第一种则不会去使用。


    字典

    假如现有20名同学,他们的序号和成绩以对应形式的字典给出,如下所示:

    >>> students = {x: randint(30, 100) for x in xrange(1, 21)}
    >>> students
    {1: 31, 2: 37, 3: 34, 4: 77, 5: 69, 6: 68, 7: 84, 8: 83, 9: 49, 10: 60, 11: 39,
    12: 96, 13: 79, 14: 80, 15: 90, 16: 75, 17: 38, 18: 61, 19: 97, 20: 66}

     现在要筛选出成绩优秀(即80分以上)的同学。

    使用字典解析

    >>> {k:v for k,v in students.iteritems() if v >= 80}
    {7: 84, 8: 83, 12: 96, 14: 80, 15: 90, 19: 97}

    这个过程中,使用了students.iteritems()而不只是students,这是由于如果只遍历students则只会得到键,而不会得到值。


    集合

    集合解析:

    >>> data
    [-1, 8, -9, 9, 10, -2, 6, -8, -2, 10]
    >>> s = set(data)
    >>> s
    set([6, 8, 9, 10, -1, -9, -8, -2])
    >>> {x for x in s if x % 3 == 0}
    set([9, 6, -9])
  • 相关阅读:
    解决clickonce不支持administer权限问题
    好好了解一下Cookie(强烈推荐)
    Cookie的存储读取删除修改 (cookie.Expires读取永远是零时间)
    14VUE插槽
    13VUE非父子组件传值
    1VUE学习方法
    11VUE监听原生事件
    10VUE,组件参数校验,组件3
    9,Vue组件2
    8.VUE计数器,基于组件
  • 原文地址:https://www.cnblogs.com/shiyu404/p/5941759.html
Copyright © 2011-2022 走看看