python实战提升


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

python中for _ in range(10)与for i in range(10)有何区别

下划线表示 临时变量, 仅用一次,后面无需再用到

列表:

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

字典:

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

集合:

data = [random.randint(-10,10) for _ in range(10)]

s = set(data)
print(s) s1 = {x for x in s if x % 3 == 0}
print(s1)

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

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

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

# 生成一个随机列表
from random import randint
# l = [randint(1,11) for _ in range(20)]
# print(l)
#
# d = dict.fromkeys(l,0)
# {11: 0, 9: 0, 1: 0, 2: 0, 4: 0, 10: 0, 5: 0, 6: 0, 8: 0}
# print(d)
#
# for i in l:
# d[i] += 1
# print(d)
# {11: 4, 9: 2, 1: 2, 2: 2, 4: 3, 10: 2, 5: 2, 6: 2, 8: 1} # 根据字典的值进行排序 # 第一种方法
import random
# d = {x:random.randint(60,100) for x in range(1,11)}
# print(d) # {1: 76, 2: 85, 3: 80, 4: 100, 5: 79, 6: 77, 7: 80, 8: 68, 9: 67, 10: 98}
# 从小到大排序.总体思路:sorted函数可以对列表[]进行从小到大排序,对于字典{}
# dict,sorted函数只比较dict的key进行排序,所以要对dict进行调整变形。
# ret = sorted(d)
# print(ret) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# z=zip(d.values(),d.keys()) # z 是可迭代对象
# print(list(z))
# z = list(z)
# 在 Python 3.x 中为了减少内存,
# zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。
# ret = sorted(z,reverse=True)
# print(ret) # 第二种方法
# [(a1,b1,c1),(a2,b2,c2),(a3,b3,c3),(a4,b4,c4)……]
# sorted函数可以对这种集合进行指定元素排序。 # sorted(d.items(),key=lambda x:x[1]),第一个从参数是需要排序的列表,
# 第二个参数是指定key(列表中每一项的第几个元素)来进行排序。
# print(d.items())
#
# ret = sorted(d.items(),key=lambda x:x[1],reverse=True)
# print(ret) # 第三种方法
# 利用collections的子类Counter从大到小排序
from collections import Counter
d = {x:random.randint(1,5) for x in range(1,11)}
ret = Counter(d).most_common()
print(ret)
ret = Counter(d).most_common(3)
print(ret) import random
from collections import Counter l = [random.randint(1,11) for _ in range(1,30)]
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] obj = Counter(l)
print(obj) # Counter({11: 9, 5: 4, 9: 4, 3: 3, 2: 2, 8: 2, 6: 2, 4: 1, 7: 1, 10: 1}) print(obj.most_common(3)) # [(11, 9), (5, 4), (9, 4)]

英文词频的统计

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

4、公共键

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

from random import randint,sample

name = ['hou','liu','cluo','meixi','wu','alex']
# print(sample(name,randint(3,6))) s1 = {x:randint(1,4) for x in sample(name,randint(3,6))}
print(s1) s2 = {x:randint(1,4) for x in sample(name,randint(3,6))}
print(s2) s3 = {x:randint(1,4) for x in sample(name,randint(3,6))}
print(s3) ret = s1.keys() &s2.keys() &s3.keys()
print(ret)

多个字典:

l = [s1,s2,s3]
l3 = l[-1].keys()
l2 = [l3] s_and = ['none',]
while l:
s = l.pop()
print(s.keys())
s_and[-1] = s.keys() & l2[-1]
l2[-1] = s.keys()
print(s_and)

5、 历史记录

使用deque,它是一个双端循环队列
程序退出时候,可以使用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. mysql 表映射为java bean 手动生成。

    在日常工作中,一般是先建表.后建类.当然也有先UML构建类与类的层级关系,直接生成表.(建模)这里只针对先有表后有类的情况.不采用代码生成器的情况. 例如: 原表结构: ),)) BEGIN ); ) ...

  2. issue_hana

    2019-01-11T14:35:01.910187+08:00 SHADEVDB01 cron[57062]: PAM unable to dlopen(/lib64/security/pam_sy ...

  3. python中并发编程基础1

    并发编程基础概念 1.进程. 什么是进程? 正在运行的程序就是进程.程序只是代码. 什么是多道? 多道技术: 1.空间上的复用(内存).将内存分为几个部分,每个部分放入一个程序,这样同一时间在内存中就 ...

  4. json 异常

    com.google.gson.JsonSyntaxException: 1530842820000 1530842820000 是服务器直接返回的Date值由 Gson 解析后出来的值. 后台发出: ...

  5. Echarts 饼状图自定义颜色

    今天给饼状图着色问题,找了好久 终于找到了 话不多说直接上代码 $.ajax({ url: "/HuanBaoYunTai/ajax/HuanBaoYunTaiService.ashx&qu ...

  6. JPA和SpringData知识梳理

    一. JPA,全称Java Persistence API,用于对象持久化的API,定义一套接口,来规范众多的ORM框架,所以它是在ORM框架之上的应用. 下面主要讲JPA在Hibernate基础上的 ...

  7. “AS3.0高级动画编程”学习:第三章等角投影(上)

    什么是等角投影(isometric)? 原作者:菩提树下的杨过出处:http://yjmyzz.cnblogs.com 刚接触这个概念时,我也很茫然,百度+google了N天后,找到了一些文章: [转 ...

  8. 450. Delete Node in a BST 删除bst中的一个节点

    [抄题]: Given a root node reference of a BST and a key, delete the node with the given key in the BST. ...

  9. 36. Valid Sudoku 判断九九有效的数独

    [抄题]: Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according ...

  10. Java中两个线程是否可以同时访问同一个对象的两个不同的synchronized方法?

    不可以!!! 多个线程访问同一个类的synchronized方法时, 都是串行执行的 ! 就算有多个cpu也不例外 ! synchronized方法使用了类java的内置锁, 即锁住的是方法所属对象本 ...