一无所知的世界,走下去,才有惊喜。  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 job2)通过序号可以获取到user列表中对应的信息
    3)使用字典生产式,依托两个列表信息创建字典
    >>> dict((k,user[i]) for i,k in enumerate(field))
    {'job': 'sa', 'age': '28', 'id': 1, 'name': 'guanqing'}

  • 使用列表、字典生产式优化作业代码

转载于:https://www.cnblogs.com/guanqingye/p/7509394.html

Python实战之路-day6相关推荐

  1. Python 进阶之路 (八) 最用心的推导式详解 (附简单实战及源码)

    什么是推导式 大家好,今天为大家带来问我最喜欢的Python推导式使用指南,让我们先来看看定义~ 推导式(comprehensions)是Python的一种独有特性,推导式是可以从一个数据序列构建另一 ...

  2. python自动化运维之路~DAY6

    python自动化运维之路~DAY6 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  如果你想开发一款游戏,会存在角色的混搭的情况,这个时候"面向对象过程"就出 ...

  3. 【Python实战】数据预处理(数据清理、集成、变换、归约)

    [Python实战]数据预处理 前言 数据预处理概述 数据清理 异常数据处理 1.异常数据分析 2.异常数据处理方法 缺失值处理 噪声数据处理 数据集成 1.实体识别 2.冗余属性 3.数据不一致 数 ...

  4. 我的Python学习之路(一)_Mr_Ouyang

    我的Python学习之路(一)_Mr_Ouyang 笔者按: 本文从18:55开始写作,至19:38中断,又从21:12始继续,至23:22写就. 共计耗时113分钟,总字数9081字,约80.4字/ ...

  5. Python实战,爬取金融期货数据

    大家好,我是毕加锁. 今天给大家带来的是 Python实战,爬取金融期货数据 文末送书! 文末送书! 文末送书! 任务简介   首先,客户原需求是获取https://hq.smm.cn/copper网 ...

  6. 整理了200多个Python实战案例,都有完整且详细的教程

    不管是学习什么语言,最终目的都是做项目.搜遍全网,整理了200多个Python实战的小项目,都有完整的代码,以及代码中用到的数据源等等.可以直接拿来用,也可以用于学习练手寻找思路. 告别枯燥,60秒学 ...

  7. 干货满满的 Python 实战项目,点赞收藏

    作者 | 俊欣 来源 | 关于数据分析与可视化 今天小编来给大家介绍3个干货满满的计算机视觉方向的Python实战项目,主要用到的库有 opencv-python numpy pillow 要是大家所 ...

  8. python语言type board_菜鸟学Python,双手奉上老司机给上路新手总结的Python实战问题……...

    针对Python这一话题每天后台都会有不少小伙伴提出问题,下面我就将这些问题进行汇整,产出"Python实战问题篇",我认为这些问题非常具有代表性,希望可以帮到大家. 第一类问题: ...

  9. App项目实战之路(二):API篇

    原创文章,转载请注明:转载自Keegan小钢 并标明原文链接:http://keeganlee.me/post/practice/20160812 微信订阅号:keeganlee_me 写于2016- ...

  10. python 靶心_手把手教你使用Python实战反欺诈模型|原理+代码

    原标题:手把手教你使用Python实战反欺诈模型|原理+代码 作者 | 萝卜 来源 | 早起Python(ID: zaoqi-python) 本文将基于不平衡数据,使用Python进行 反欺诈模型数据 ...

最新文章

  1. shell 远程协助协助(转载)
  2. 马凯军201771010116《面向对象程序设计(java)》第二周学习总结
  3. deepin8、9安装docker并添加用户,解决报错:aptsources.distro.NoDistroTemplateException
  4. python 数组打包_Python:打包多字节数组
  5. 帆软报表,报错:sql注入攻击问题
  6. [教程]centos卸载、安装mysql(源码编译安装方式)
  7. 408考研经验分享(待更
  8. python制作电子签名
  9. word用宏设置图片的大小
  10. 2021年最完善的谷歌SEO关键词调研技巧
  11. linux驱动数码管-基于74HC164D
  12. css 平移到某个位置_css怎么移图片位置?
  13. 一剪梅·红藕香残玉簟秋
  14. 依概率收敛与按分布收敛
  15. Ubuntu查看并修改DNS
  16. 判断无向图G是否是一颗树
  17. 2021最新微信影视小程序源码无限代开+搭建详细教程
  18. libuv之mingw64环境搭建及编译Libuv
  19. filebeat重复采集数据问题排查
  20. DataFrame的元素选择与赋值

热门文章

  1. LINUX下载编译libsndfile
  2. 拿工资,要做差不多的事
  3. 泰山游记:厕所竟然没水,可想而知
  4. HOOK(钩子,挂钩)
  5. c语言读一字节程序,C语言读写二进制文件
  6. mysql并行读写_mysql数据库大规模数据读写并行时导致的锁表问题
  7. kaios好用吗_如何评价Kai Os?
  8. 判断文件中字符是否存在_使用Python库判断字符是否在字体里
  9. android判断某文件下是否you_Android_判断文件是否存在并创建代码
  10. Process Monitor