Python实战之路-day6

一无所知的世界,走下去,才有惊喜。  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‘}
  • 使用列表、字典生产式优化作业代码
时间: 2024-10-11 16:07:49

Python实战之路-day6的相关文章

Python实战之路-day2

我们始终都要远行,最终都要与稚嫩的自己告别,告别是通向成长的苦行之路. Hello Python - day2! Python中的五种内建数据结构: 变量     name = "guanqing" 列表    name = ['user1','user2','user3'] 字典       name = {'name':'guanqing','age':28} 文件       file.txt 数据库    mysql 列表: list.append('aa')  #增加. 列表

Python实战之路-day5

生活在于改变,改变自己的生活需要勇气,改变自己的目标更需要勇气.  Hello Python - day5! MVC心法 针对存储端(M)的数据进行增删改查 入库:V端通过HTML.CSS.JS的数据通过GET.POST发送请求,C端(python)通过request.form.get()或request.args.get()接受V端的数据,格式化通过列表.字典.字符串结合python语法存储到M端 出库:V端发送get请求数据,C端python通过request.args.get()拿到get

python学习之路day6

python装饰器 装饰器本质上是一个函数,在不对其他函数源代码进行修改的情况下,为其他函数提供额外功能. import timedef test1(): time.sleep(3) print('in the test1')def test2(): time.sleep(3) print('in the test2')def timer(func): #就是返回deco函数的内存地址 def deco(): stime=time.time() func() ptime=time.time()

Python实战之KNN实现

Python实战之KNN实现 用Python来实现K近邻分类算法(KNN)已经是一个老生常谈的问题,网上也已经有诸多资料,不过这里我还是决定记录一下自己的学习心得. 1.配置numpy库 numpy库是Python用于矩阵运算的第三方库,大多数数学运算都会依赖这个库来进行,关于numpy库的配置参见:Python配置第三方库Numpy和matplotlib的曲折之路,配置完成后将numpy库整体导入到当前工程中. 2.准备训练样本 这里简单的构造四个点并配以对应标签作为KNN的训练样本: # =

2016马哥教育重磅来袭--Python实战网络班

如何确保自己职场快人一步?如何成就非凡之路?前景开阔.上手容易.名师阵容.丰富一线案例的马哥2016全新python开发课程,你值得拥有! 在众多朋友的期待与欢呼中,马哥教育重磅推出了Python实战网络班. 到底马哥2016全新Python实战班都有什么特别之处呢?下面就来一睹为快吧!         如果有那么一丝丝的心动,请不要压抑自己的感情!速速联系马哥教育课程顾问们吧!(QQ:1661815153.2813150558.1660809109~)

Python学习之路——强力推荐的Python学习资料

资料一:程序媛想事儿(Alexia)总结 Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl.Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理内存使用.它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务. Python上手虽然容易,但与其它任何语言一样要学好Python并非一日之功.我的Pyth

BoW图像检索Python实战

下文来自我的博客:BoW图像检索Python实战 前几天把HABI哈希图像检索工具包更新到V2.0版本后,小白菜又重新回头来用Python搞BoW词袋模型,一方面主要是练练Python,另一方面也是为了CBIR群开讲的关于图像检索群活动第二期而准备的一些素材.关于BoW,网上堆资料讲得挺好挺全的了,小白菜自己在曾留下过一篇讲解BoW词袋构建过程的博文Bag of Words模型,所以这里主要讲讲BoW的实战.不过在实战前,小白菜还想在结合自己这两年多BoW的思考和沉淀重新以更直白的方式对BoW做

软件工程(C编码实践篇)课程总结——我的第一次代码实战之路

课程内容来自网易云课堂-软件工程(C编码实践篇)--中国科学技术大学孟宁老师主讲! 作者:魏红 魏红<软件工程(C编码实践篇)>MOOC课程作业http://mooc.study.163.com/learn/USTC-1000002006 一.心得体会 在写这篇博客时,我的心情不是想象中的如释重负,而是感慨和激动.作为一名理科生,代码对于我来说,陌生.遥远.不曾触及,所以当我开始接触到实验,需要自己动手的时候,我就崩溃了.哪怕是最简单的hello world小程序,我都折腾了好久,第一次的实验

Python实战:美女图片下载器,海量图片任你下载

Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习Python这门语言. 本文是在前一部分Python基础之上Python实战:Python爬虫学习教程,获取电影排行榜,再次升级的Python网页爬虫实战课程. 1.项目概述. 利用XPath和requests模块进行网页抓取与分析,达到网页图片下载的效果. 抓爬图片地址:http://www.2c