Python3 高级编程技巧(部分)
目录:
在列表、字典、集合中筛选数据
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771
示例数据:
data_list = [ 52, 68, 20, 85, 63, 21, 14, 85 ]
data_dict = { ‘数学’:56, ‘英语’:68, ‘语文’:55, ‘生物’:72, ‘物理’:92, ‘体育’:32 }
data_set = { 52, 68, 20, 85, 63, 21, 14, 85 }
- 列表
- [ x for x in data_list if x > 60 ]
- filter(lambda x: x > 60, data_list) # 注:filter返回的是迭代器
- 字典
- { key: val for key, val in d.items() if val > 60 }
- 集合
- { x for x in data_set if x > 60 }
为元组元素命名
如果我们的数据有固定的格式如学生信息有姓名、性别、年龄等等,这时我们通常使用元组储存数据,以此减少内存开销。
但因此不能像字典那样以键访问值,因此,我们需要一个兼具字典和元组优点的类型。
> 命名元组 collections.namedtuple
from collections import namedtuple
Student = namedtuple('Student', ['name', 'sex', 'age'])
s1 = Student('Tom', '男', 18)
print(s1[1]) # '男'
print(s1.age) # 18
通过列表、元组创建字典
> dict.fromkeys
如下,我打算统计 data_list 中每个数字出现的频率
data_list = [1, 1, 1, 2, 2, 3, 4, 4, 4, 4, 5, 5, 6, 8, 9, 9]
stat = dict.fromkeys(data_list, 0)
print(stat) # {1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 8: 0, 9: 0}
for k in data_list:
stat[k] += 1
print(stat) # {1: 3, 2: 2, 3: 1, 4: 4, 5: 2, 6: 1, 8: 1, 9: 2}
字典排序
假设我有某班数学成绩的字典型数据,我需要对其进行排序
score = {
'龙密': 51,
'于飞': 49,
'朱行': 34,
'赖国': 48,
'杜佺': 37,
'谢香': 55,
'秦香': 30,
'陆玟': 67,
'任姑': 57,
'常晓': 92
}
zip + sorted
tmp = zip(score.values(), score.keys()) # zip返回的是迭代器,内容为[(51,'龙密'),(49,'于飞'),(34,'朱行'),...]
result = sorted(tmp) # 使用 sorted(tmp, reverse=True) 进行降序排序
print(tmp) # [(30, '秦香'), (34, '朱行'), (37, '杜佺'), (48, '赖国'), ...]
sorted (使用key参数)
print(score.items()) # .items() 返回了元组列表 [('龙密', 51), ('于飞', 49), ('朱行', 34), ...]
result = sorted(score.items(), key=lambda item: item[1])
print(result) # 结果 [('秦香', 30), ('朱行', 34), ('杜佺', 37), ...]
注:似乎第一种快点,是不是很反直觉呀
寻找字典的公共键
利用集合
r1 = {'苏亚雷斯':1,'梅西':2,'本泽马':1,'c罗':3}
r2 = {'苏亚雷斯':1,'c罗':1,'格里兹曼':2,'贝尔':1}
print(r1.keys() & r2.keys()) # { 'c罗', '苏亚雷斯' }
让字典保持有序
> 有序字典 collections.OrderedDict
from collections import OrderedDict
od = OrderedDict()
od['first'] = '这是第一条数据'
od['second'] = '这是第二条数据'
od['third'] = '这是第三条数据'
for key,val in od.items():
print(key, val)
'''输出如下
first 这是第一条数据
second 这是第二条数据
third 这是第三条数据
'''
生成器函数
def getId():
i = 0
while(True):
i += 1
yield i
id = getId()
for _ in range(10):
print(next(id))
'''结果
1
2
3
...
'''
yield协程
使用协程计算平均数
def average():
count, total, arg = 0, 0, 0
while True:
val = yield arg
if val:
total += val
count += 1
arg = total / count
data = [15, 56, 85, 25, 36, 45, 20, 21, 2]
arg = average()
next(arg) # 预激
for val in data:
print(arg.send(val))
print('平均数:', next(arg))
'''结果
15.0
35.5
52.0
45.25
43.4
43.666666666666664
40.285714285714285
37.875
33.888888888888886
平均数: 33.888888888888886
'''
同时遍历值与下标
> enumerate
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
for i, v in enumerate(seasons):
print('{}: {}'.format(i, v))
'''返回
0: Spring
1: Summer
2: Fall
3: Winter
'''
Python3 高级编程技巧(部分)的更多相关文章
- python3高级编程
1. SMTP发送邮件 internet相关协议: http:网页访问相关,httplib,urllib,xmlrpclib ftp:文件传输相关, ftplib, urllib nntp:新闻和帖子 ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(11)-高级编程技巧 Box2d和Shader
高级编程技巧只是相对的,其实主要是讲物理模拟和着色器程序的使用. 本章主要讲解利用Box2D并用它来实现萝卜雨,然后是使用单色着色器shader让画面呈现单色状态:http://files.cnblo ...
- Python3实用编程技巧进阶 ☝☝☝
Python3实用编程技巧进阶 ☝☝☝ 1.1.如何在列表中根据条件筛选数据 # 1.1.如何在列表中根据条件筛选数据 data = [-1, 2, 3, -4, 5] #筛选出data列表中大于等 ...
- Python3实用编程技巧进阶✍✍✍
Python3实用编程技巧进阶 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候可以 ...
- Python3实用编程技巧进阶
Python3实用编程技巧进阶 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候可以 ...
- Python的几个高级编程技巧
Python有一些技巧对你来说是新知识,但是还有一些技巧会让你的代码效率大幅提升. 本文总结了一下自己用到的一些Python高级编程技巧,希望对大家有帮助. 列表生成器 a=[1,2,3] [x*x ...
- python高级编程技巧
由python高级编程处学习 http://blog.sina.com.cn/s/blog_a89e19440101fb28.html Python列表解析语法[]和生成 器()语法类似 [expr ...
- python 的一些高级编程技巧
正文: 本文展示一些高级的Python设计结构和它们的使用方法.在日常工作中,你可以根据需要选择合适的数据结构,例如对快速查找性的要求.对数据一致性的要求或是对索引的要求等,同时也可以将各种数据结构合 ...
- Python高级编程技巧(转)
译文:http://blog.jobbole.com/61171/ 本文展示一些高级的Python设计结构和它们的使用方法.在日常工作中,你可以根据需要选择合适的数据结构,例如对快速查找性的要求.对数 ...
随机推荐
- 4.28 省选模拟赛 负环 倍增 矩阵乘法 dp
容易想到 这个环一定是简单环. 考虑如果是复杂环 那么显然对于其中的第一个简单环来说 要么其权值为负 如果为正没必要走一圈 走一部分即可. 对于前者 显然可以找到更小的 对于第二部分是递归定义的. 综 ...
- 【01python基础】
1.python的环境搭建(Python3 下载) Python 官网:https://www.python.org/ Python文档下载地址:https://www.python.org/doc/ ...
- node.js 使用----相关常用命令总结
node.js 使用----相关常用命令总结 1. 下载并安装node.js 2. 设置全局模块存放的目录 2.1 查看默认配置 npm config ls 2.2 修改全局模块存放目录 npm co ...
- python 版本 jaeger-client 导入失败 jaeger-client-python
环境为: OS: ubuntu18.04 Python: 3.6 问题原因: 尝试使用 jaeger-client-python,官方给出的示例(https://github.com/jaegertr ...
- Python 实现 T00ls 自动签到脚本(邮件+钉钉通知)
T00ls 每日签到是可以获取 TuBi 的,由于常常忘记签到,导致损失了很多 TuBi .于是在 T00ls 论坛搜索了一下,发现有不少大佬都写了自己的签到脚本,签到功能实现.定时任务执行以及签到提 ...
- 【av68676164(p51-p53)】虚拟内存管理(2)
虚拟内存管理(2) 7.3.4 缺页终端 分级存储体系 cache+内存+辅存 页表扩充-带中断位的页表 页号 页框号 中断位I 辅存地址 访问位 修改位 1 1 0 0 0 1 中断位I-标志该页是 ...
- RIPS源码阅读记录(二)
Author: tr1ple 这部分主要分析scanner.php的逻辑,在token流重构完成后,此时ini_get是否包含auto_prepend_file或者auto_append_file 取 ...
- spring时遇到的小问题
最近在学习spring的时候遇到了两个小问题,在此总结一下 1.少导了所需要的包 运行测试程序,报出以下错误. 初步分析,得知是dataSource数据源没有创建成功,以为dataSource配置文件 ...
- ASP.NET Core - 实现Http自定义请求头策略
前言 在正常的情况下,当我们系统用到JWT认证方式时,需要在Http请求头添加Authorization: XXX,这样在后台服务的控制器中打上[Authorize]授权标签,就限定所有的请求必须通过 ...
- Java indexof
java中字符串方法 indexof() indexof()可以返回输入的字符串在目标字符串中第一次出现的位置,如果没有出现返回int 0: