码迷,mamicode.com
首页 > 编程语言 > 详细

Python实战之路-day6

时间:2017-09-12 13:38:09      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:方式   序号   print   多个   color   ict   条件   应用   logs   

一无所知的世界,走下去,才有惊喜。  Hello Python - day6!

 

  • 列表生产式
  1. 语句格式
    [x for x in 内容]
    [x for x in 内容 if 条件]
    
    1)把要生成的元素x放到前面,执行的时候,先执行后面的for循环
    2)后面跟上for循环,可以有多个for循环,也可以在for循环后面再加个if条件
    3)for循环后面可以是任何方式的迭代器(元组、列表、生成器等)只要迭代对象的元素中至少有一个值
  2. 单循环列表生产式
     1 >>> a = "abcd"
     2 >>> [x for x in a]
     3 [a, b, c, d]
     4 
     5 展开写为:
     6 >>> a = "abcd"
     7 >>> b = []
     8 >>> for x in a:
     9 ...     b.append(x)
    10 ... 
    11 >>> print b
    12 [a, b, c, d]
  3. 双循环列表生产式
     1 >>> [m+n for m in abc for n in ABC]
     2 [aA, aB, aC, bA, bB, bC, cA, cB, cC]
     3 
     4 展开写为:
     5 >>> b = []
     6 >>> for n in ABC:
     7 ...     for m in abc:
     8 ...             b.append(n+m)
     9 ... 
    10 >>> print b
    11 [Aa, Ab, Ac, Ba, Bb, Bc, Ca, Cb, Cc]
  4. 加if判断的列表生成式 --- 执行顺序 for 循环 嵌套 if 判断 最后输出
     1 >>> [x*x for x in range(1,11) if x%2 == 0]
     2 [4, 16, 36, 64, 100]
     3 
     4 展开写为:
     5 >>> a = []
     6 >>> for x in range(1,11):
     7 ...     if x%2 == 0:
     8 ...             a.append(x*x)
     9 ... 
    10 >>> print a
    11 [4, 16, 36, 64, 100]
    12 
    13 
    14 实际用例:迭代字典生成列表
    15 >>> dict = {name:guanqing,age:28,sex:man}
    16 >>> field = [k for k,v in dict.items()]
    17 >>> value = [v for k,v in dict.items()]
    18 >>> field
    19 [age, name, sex]
    20 >>> value
    21 [28, guanqing, man]
  • 字典生产式
  1. 语句格式
     1 dict = {k:v for (k,v) in iterable}  #iterable 可迭代的,就是可以被for循环的
     2 
     3 可以用任何方式的迭代器(元组、列表、生成器等)只要可迭代队形的元素中有两个值
     4 
     5 >>> c = [4, 16, 36, 64, 100]
     6 >>> {v:v for v in c}
     7 {16: 16, 36: 36, 4: 4, 64: 64, 100: 100}
     8 >>> {v:v*2 for v in c}
     9 {16: 32, 36: 72, 4: 8, 64: 128, 100: 200}
    10 >>> {v:v*2  for v in abcd}
    11 {a: aa, c: cc, b: bb, d: dd}
    12 >>> d = {a: aa, c: cc, b: bb, d: dd}
    13 >>> {v:k for k,v in d.items()}
    14 {aa: a, cc: c, dd: d, bb: b}

  2. 列表和字典生成式的区别:
    列表生产式:前面只需要是用一个值,后面for循环可迭代对象,用[]括住整个语句
    字典生产式:前面需要使用两个值,后面for循环存在2个值的可迭代队形,用{}括住整个语句
  • 列表、字典生成式应用场景
  1. 模拟从数据库取值,换成字典、然后传给前端
    user = (1,wd,18,sa)   # 数据库传来的数据
    ……
    ……
    {age:18,id:1,name:wd,job:sa}   # 转换完的样式
    
    方式一:
    >>> user=(1,guanqing,28,sa)
    >>> field=[id,name,age,job]
    >>> zip(field,user)
    [(id, 1), (name, guanqing), (age, 28), (job, sa)]
    >>> dict(zip(field,user))
    {job: sa, age: 28, id: 1, name: guanqing}
    
    zip函数详解:http://www.jb51.net/article/53051.htm
    
    
    方式二:
    >>> field =[id,name,age,job]
    >>> user=(1,guanqing,28,sa)
    >>> dict((k,user[i]) for i,k in enumerate(field))
    {job: sa, age: 28, id: 1, name: guanqing}
    
    语句解析:
    1)通过enumerate函数取出field列表中信息和对其对应的账号
    >>> field =[id,name,age,job]
    >>> for i,k in enumerate(field):
    ...     print i,k
    ... 
    0 id
    1 name
    2 age
    3 job
    
    2)通过序号可以获取到user列表中对应的信息
    3)使用字典生产式,依托两个列表信息创建字典
    >>> dict((k,user[i]) for i,k in enumerate(field))
    {job: sa, age: 28, id: 1, name: guanqing}
  • 使用列表、字典生产式优化作业代码

 

Python实战之路-day6

标签:方式   序号   print   多个   color   ict   条件   应用   logs   

原文地址:http://www.cnblogs.com/guanqingye/p/7509394.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!