python实战提升--1
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的更多相关文章
- 自然语言处理之中文分词器-jieba分词器详解及python实战
(转https://blog.csdn.net/gzmfxy/article/details/78994396) 中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块,在进行中文自 ...
- 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程
点击了解更多Python课程>>> 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程 适用人群: 即将毕业的大学生,工资低工作重的白领,渴望崭露头角的职场新人, ...
- zeromq 学习和python实战
参考文档: 官网 http://zeromq.org/ http://www.cnblogs.com/rainbowzc/p/3357594.html 原理解读 zeromq只是一层针对socke ...
- Python实战:美女图片下载器,海量图片任你下载
Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...
- Python实战:Python爬虫学习教程,获取电影排行榜
Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...
- python实战--数据结构二叉树
此文将讲述如何用python实战解决二叉树实验 前面已经讲述了python语言的基本用法,现在让我们实战一下具体明确python的用法 点击我进入python速成笔记 先看一下最终效果图: 首先我们要 ...
- 再一波Python实战项目列表
前言: 近几年Python可谓是大热啊,很多人都纷纷投入Python的学习中,以前我们实验楼总结过多篇Python实战项目列表,不但有用还有趣,最主要的是咱们实验楼不但有详细的开发教程,更有在线开发环 ...
- python实战:用70行代码写了一个山炮计算器!
python实战训练:用70行代码写了个山炮计算器! 好了...好了...各位因为我是三年级而发牢骚的各位伙伴们,我第一次为大家插播了python的基础实战训练.这个,我是想给,那些python基础一 ...
- python实战博客
2018-10-31 更新Logging日志记录以及异常捕获 感谢廖大教程.Python实战 直接在闲置的服务器上开发.阿里云Centos 6.8 64位. 1 搭建开发环境 Python 环境是Py ...
随机推荐
- leetcode169
public class Solution { public int MajorityElement(int[] nums) { Dictionary<int, int> dic = ne ...
- JavaScript学习-1
本章目录: --------①数据类型. --------②定义变量. --------③类型转换. --------④运算符. --------⑤比较符. --------⑥if语句. ------ ...
- React琐碎
1 dangerouslySetInnerHTML 使用此属性的原因是得到一个安全的数据,生成一个仅包含唯一key——__html的对象,表明这段内容会被当成text/taint使用,它的使用方式是这 ...
- 初学Python的奇葩用法
ming_piao= 11ming_yeji= 586319ming_age= 34ming_gongling= 10ming_yanjiang= 81 qiang_piao= 7qiang_yeji ...
- Github(远程仓库) 2
远程仓库之前就添加好了 今天弄了简单的查看远程库,提取远程库,在线修改以及本地更新修改,推送到远程仓库,删除远程仓库,参考http://www.runoob.com/git/git-remote-re ...
- SpringJDBC :jdbcTemplate在连接是出现 org/springframeworkbc/core/JdbcTemplate : Unsupported major.minor version 52.0 异常解决
原因是这个在jdk9版本才能使用,需更新jdk版本. 更新jdk9之后在idear的配置: 第一步:File---->Project Structure---->Project 第二步: ...
- Data Persistence
[Data Persistence] 1.构建环境. cd /home/ubuntu/contracts mkdir addressbook cd addressbook touch addressb ...
- OpenStack 安装:glance 安装
接上一篇keystone, 这一篇介绍glance服务: 在开始操作之前,先用source环境变量,然后创建glance 用户,并设置密码为glance [root@linux-node1 ~]#op ...
- 迭代器模块 itertools
无限迭代器 itertools 包自带了三个可以无限迭代的迭代器.这意味着,当你使用他们时,你要知道你需要的到底是最终会停止的迭代器,还是需要无限地迭代下去. 这些无限迭代器在生成数字或者在长度未知的 ...
- 【Django】网页跳转的问题
这两天有个比较奇怪了问题困扰着我,就是网页跳转之后页面没有变化,虽然url已经变了,但是页面还是原来的,只是表单数据清空了 就是http://127.0.0.1:8000/signup_signin/ ...