Python的一些进阶学习-2017.08.07

来源:互联网 发布:three.js dae 顶点数 编辑:程序博客网 时间:2024/06/05 22:36

一.列表,字典,集合的筛选

  1. 列表 的筛选
    列表的筛选 有两种:

    1.   filter     #通过列表解析随机推导定义一个列表            In [2]: data =[randint(-10,10) for _ in xrange(10)]            In [3]: data                  Out[3]: [10, -1, -3, 10, -7, -10, -9, 8, -9, 7]            #通过filter函数筛选  (其实可以去看看filter源码咋实现的)            In [4]:  filter(lambda x: x>0 ,data)            Out[4]: [10, 10, 8, 7] 2. 列表解析推导            In [6]: [x for x in data if x>=0]            Out[6]: [10, 10, 8, 7]      突然想知道两种方式 哪种更优呢?       In [7]: timeit filter(lambda x:x>=0 ,data)       1000000 loops, best of 3: **1.39 µs** per loop       In [8]: timeit [x for x in data if x>=0]       1000000 loops, best of 3: **545 ns** per loop       **发现列表解析通常比filter 更快**                     
  2. 字典的筛选
    随机生成一个集合。
    In [9]: {x: randint(60,100) for x in xrange(1,21)}
    通过列表解析 键值对 来筛选 (比较简单)
    In [15]: {k:v for k,v in d.iteritems() if v>90}
    Out[15]: {3: 95, 10: 97, 15: 96}

  3. 集合的筛选
    继续用刚才的data给他转成集合:
    In [16]: s= set(data)
    In [17]: s
    Out[17]: {-10, -9, -7, -3, -1, 7, 8, 10}
    就用集合解析好了:
    In [18]: {x for x in s if x>=0}
    Out[18]: {7, 8, 10}
    跟列表解析差不多 类似, 和字典解析的区别在于,字段多一个: ,多一个键值对的概念

二.为元组每个元素命名,提高程序的可持续发展~

1.      通过枚举的方式定义变量           #!/bin/python           #-*- coding: UTF-8 -*-           #name = 0           #sex = 1           #age = 2           #location= 3           #email = 4           name,sex,age,location,email = xrange(5)           Student=('Gil','Male','28','zhejiang','woshigezhipeng@sina.com')           print Student[name]           print Student[sex]           print Student[age]           print Student[location]           print Student[email]2.     通过标准库 collection.namedtuple      In [2]: from collections import namedtuple      #通过namedtuple定义一个student类      In [4]: student =namedtuple('student'['name','sex','age','location','email'])        #定义一个student对象,并赋值       In [5]: s=student('gil','male','28','zhejiang','woshigezhipeng@sina.com')      In [7]: s.name      Out[7]: 'gil'
原创粉丝点击