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 ...
随机推荐
- Java内存泄漏的几种可能
Java内存泄漏引起的原因: 内存泄漏是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成内存空间的浪费称为内存泄漏. 长生命周期的对象持有短生命周期对象的引用就很可能发 ...
- android 开发 View _8_ 动态图片自定义View
转载地址:https://blog.csdn.net/mengks1987/article/details/77770922 先来看下效果: 是不是有一种熟悉感,其实这种效果使用序列帧动画也是可以实现 ...
- Python协程、异步IO
本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitMQ队列 Redis\Memcached缓存 Paramiko SS ...
- 爬虫 1 requests 、beautifulsoup
1.requests 1.method 提交方式:post.get.put.delete.options.head.patch 2.url 访问地址 3.params 在url中传递的参数,GET p ...
- vue项目中使用axios上传图片等文件
form表单提交图片会刷新页面,也可以时form绑定到一个隐藏的iframe上,可以实现无刷新提交数据. html代码: <input name="file" type=&q ...
- Kafka自带zookeeper报错INFO Got user-level KeeperException when processing xxx Error Path:/brokers Error:KeeperErrorCode = NodeExists for /brokers (org.apache.zookeeper.server.PrepRequestProcessor)
问题描述: 按照kafka官方文档的操作步骤,解压kafka压缩包后.依次启动zookeeper,和kafka服务 kafka服务启动后,查看到zookeeper日志里有以下异常 问题原因及解决办法: ...
- 十八、Memento 备忘录设计模式
原理: 代码清单: Memento public class Memento { int mondey; ArrayList fruits; Memento(int mondey){ this.mon ...
- 166. Fraction to Recurring Decimal (Math)
Given two integers representing the numerator and denominator of a fraction, return the fraction in ...
- CentOS7 firewalld防火墙配置
[root@ecs ~]# firewall-cmd --version //查看版本0.3.9 [root@ecs ~]# firewall-cmd --state //查 ...
- C++中的inline用法