python实战提升


1、 如何在列表、字典、集合中根据条件筛选数据?

  1. pythonfor _ in range(10)与for i in range(10)有何区别
  2. 下划线表示 临时变量, 仅用一次,后面无需再用到

列表:

  1. import random
  2. # 生成一个随机数列表
  3. #方法一:
  4. # l = []
  5. # for i in range(10):
  6. # l.append(random.randint(-10,10))
  7. # print(l)
  8. #列表生成式,循环十次,要生成的列表的内容放最前边。
  9. data = [random.randint(-10,10) for i in range(10)]
  10. print(data)
  11. # filter内置函数过滤
  12. # ret = filter(lambda x:x>=0,data) # 返回一个对象
  13. # for i in ret:
  14. # print(i)
  15. # filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素
  16. # 进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件
  17. # 的元素,返回由符合条件元素组成的新list。
  18. # 列表推导式
  19. l1 = [i for i in data if i > 0]
  20. print(l1)

字典:

  1. # 随机生成一个字典
  2. d = {x:random.randint(60,100) for x in range(1,21)}
  3. print(d)
  4. # 字典生成式
  5. dic = {k:v for k,v in d.items() if v >= 90}
  6. print(dic)

集合:

  1. data = [random.randint(-10,10) for _ in range(10)]
  2. s = set(data)
  3. print(s)
  4. s1 = {x for x in s if x % 3 == 0}
  5. print(s1)

2、 如何为元祖中的每个元素命名,提高程序可读性?

  1. # 方法一 变量定义
  2. NAME,AGE,MALE,EMAIL = range(4)
  3. # print(NAME)
  4. # 方法二
  5. from collections import namedtuple
  6. #namedtuple('名称', [属性list])
  7. from collections import namedtuple
  8. Point = namedtuple('Point', ['x', 'y'])
  9. print(Point) # <class '__main__.Point'>
  10. p = Point(1, 2)
  11. print(p.x)

3、如何统计序列中元素的出现频率?

  1. # 生成一个随机列表
  2. from random import randint
  3. # l = [randint(1,11) for _ in range(20)]
  4. # print(l)
  5. #
  6. # d = dict.fromkeys(l,0)
  7. # {11: 0, 9: 0, 1: 0, 2: 0, 4: 0, 10: 0, 5: 0, 6: 0, 8: 0}
  8. # print(d)
  9. #
  10. # for i in l:
  11. # d[i] += 1
  12. # print(d)
  13. # {11: 4, 9: 2, 1: 2, 2: 2, 4: 3, 10: 2, 5: 2, 6: 2, 8: 1}
  14. # 根据字典的值进行排序
  15. # 第一种方法
  16. import random
  17. # d = {x:random.randint(60,100) for x in range(1,11)}
  18. # print(d) # {1: 76, 2: 85, 3: 80, 4: 100, 5: 79, 6: 77, 7: 80, 8: 68, 9: 67, 10: 98}
  19. # 从小到大排序.总体思路:sorted函数可以对列表[]进行从小到大排序,对于字典{}
  20. # dict,sorted函数只比较dict的key进行排序,所以要对dict进行调整变形。
  21. # ret = sorted(d)
  22. # print(ret) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  23. # z=zip(d.values(),d.keys()) # z 是可迭代对象
  24. # print(list(z))
  25. # z = list(z)
  26. # 在 Python 3.x 中为了减少内存,
  27. # zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。
  28. # ret = sorted(z,reverse=True)
  29. # print(ret)
  30. # 第二种方法
  31. # [(a1,b1,c1),(a2,b2,c2),(a3,b3,c3),(a4,b4,c4)……]
  32. # sorted函数可以对这种集合进行指定元素排序。
  33. # sorted(d.items(),key=lambda x:x[1]),第一个从参数是需要排序的列表,
  34. # 第二个参数是指定key(列表中每一项的第几个元素)来进行排序。
  35. # print(d.items())
  36. #
  37. # ret = sorted(d.items(),key=lambda x:x[1],reverse=True)
  38. # print(ret)
  39. # 第三种方法
  40. # 利用collections的子类Counter从大到小排序
  41. from collections import Counter
  42. d = {x:random.randint(1,5) for x in range(1,11)}
  43. ret = Counter(d).most_common()
  44. print(ret)
  45. ret = Counter(d).most_common(3)
  46. print(ret)
  47. import random
  48. from collections import Counter
  49. l = [random.randint(1,11) for _ in range(1,30)]
  50. print(l) # [5, 9, 11, 11, 2, 8, 11, 2, 3, 5, 4, 7, 9, 9, 5, 11, 10, 6, 8, 11, 6, 11, 3, 11, 3, 11, 11, 5, 9]
  51. obj = Counter(l)
  52. print(obj) # Counter({11: 9, 5: 4, 9: 4, 3: 3, 2: 2, 8: 2, 6: 2, 4: 1, 7: 1, 10: 1})
  53. print(obj.most_common(3)) # [(11, 9), (5, 4), (9, 4)]

英文词频的统计

  1. import re
  2. from collections import Counter
  3. data = open('name').read()
  4. l = re.split('\W+',data)
  5. print(l)
  6. c = Counter(l)
  7. print(c.most_common(5))

4、公共键

如何快速找到多个字典中的公共键?

  1. from random import randint,sample
  2. name = ['hou','liu','cluo','meixi','wu','alex']
  3. # print(sample(name,randint(3,6)))
  4. s1 = {x:randint(1,4) for x in sample(name,randint(3,6))}
  5. print(s1)
  6. s2 = {x:randint(1,4) for x in sample(name,randint(3,6))}
  7. print(s2)
  8. s3 = {x:randint(1,4) for x in sample(name,randint(3,6))}
  9. print(s3)
  10. ret = s1.keys() &s2.keys() &s3.keys()
  11. print(ret)

多个字典:

  1. l = [s1,s2,s3]
  2. l3 = l[-1].keys()
  3. l2 = [l3]
  4. s_and = ['none',]
  5. while l:
  6. s = l.pop()
  7. print(s.keys())
  8. s_and[-1] = s.keys() & l2[-1]
  9. l2[-1] = s.keys()
  10. print(s_and)

5、 历史记录

  1. 使用deque,它是一个双端循环队列
  2. 程序退出时候,可以使用pickle将队列对象存入文件,再次运行程序是将其导入。

python实战提升--1的更多相关文章

  1. 自然语言处理之中文分词器-jieba分词器详解及python实战

    (转https://blog.csdn.net/gzmfxy/article/details/78994396) 中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块,在进行中文自 ...

  2. 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程

    点击了解更多Python课程>>> 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程 适用人群: 即将毕业的大学生,工资低工作重的白领,渴望崭露头角的职场新人, ...

  3. zeromq 学习和python实战

    参考文档: 官网 http://zeromq.org/ http://www.cnblogs.com/rainbowzc/p/3357594.html   原理解读 zeromq只是一层针对socke ...

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

    Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...

  5. Python实战:Python爬虫学习教程,获取电影排行榜

    Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...

  6. python实战--数据结构二叉树

    此文将讲述如何用python实战解决二叉树实验 前面已经讲述了python语言的基本用法,现在让我们实战一下具体明确python的用法 点击我进入python速成笔记 先看一下最终效果图: 首先我们要 ...

  7. 再一波Python实战项目列表

    前言: 近几年Python可谓是大热啊,很多人都纷纷投入Python的学习中,以前我们实验楼总结过多篇Python实战项目列表,不但有用还有趣,最主要的是咱们实验楼不但有详细的开发教程,更有在线开发环 ...

  8. python实战:用70行代码写了一个山炮计算器!

    python实战训练:用70行代码写了个山炮计算器! 好了...好了...各位因为我是三年级而发牢骚的各位伙伴们,我第一次为大家插播了python的基础实战训练.这个,我是想给,那些python基础一 ...

  9. python实战博客

    2018-10-31 更新Logging日志记录以及异常捕获 感谢廖大教程.Python实战 直接在闲置的服务器上开发.阿里云Centos 6.8 64位. 1 搭建开发环境 Python 环境是Py ...

随机推荐

  1. Linux下安装GitHub

    安装GitHub 1.下载安装git: yum -y install git git-core git-doc 2.运行完执行 ssh-keygen -t rsa -C "your@emai ...

  2. centos6.5部署redmine3.2

    ruby 2.1 + rails 4.2+ mysql 5.6 +centos6.5 + rvm 1.29 1.基本的软件环境 yum -y install libyaml-devel zlib-de ...

  3. ATS的curl清除缓存

    在/trafficserver/ip_allow.config定义好允许PURGE的IP后 推送: curl -i -X HEAD “url” -x 127.0.0.1:51899 curl -i - ...

  4. android toolbar效果3

    Title居中,只有一个右边按钮 activity_main.xml: <?xml version="1.0" encoding="utf-8"?> ...

  5. python使用细节

    python的函数位置参数在调用时可以直接传参,也可以a=5,b=7的形式传参,原以为kw参数才可以. >>> def f(a,b): print a+b >>> ...

  6. python大法好——Python 面向对象

    Python 面向对象  Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的. 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法 ...

  7. [PAClient Error] Error: E4356 File does not exist armv7

    [PAClient Error] Error: E4356 File does not exist: /Users/tt/PAServer/scratch-dir/Administrator-snIO ...

  8. English-商务英文邮件例句100句

    最常用最专业的商务英文邮件例句100句——塞依SAP培训 字体大小:大 | 中 | 小2013-08-27 17:24 阅读(74) 评论(0) 分类:sap职场  1. I am writing t ...

  9. Gitlab安装与备份恢复

    GitHub是2008年由Ruby on Rails编写而成,与业界闻名的Github类似;但要将代码上传到GitHub上面,而且将项目设为私有还要收费.GitLab是一个用于仓库管理系统的开源项目, ...

  10. centos 7 一键安装gitlab

    # cat /etc/redhat-release CentOS release 6.5 (Final) # strings /lib64/libc.so.6 |grep GLIBC_ 首先升级 如果 ...