Python笔记(六):推导数据
(一) 准备工作
创建1个文件记录运动员的跑步成绩
james.txt
2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22
(二) 要求
在屏幕上输出运动员最好的3个成绩
(三) 思考该怎么实现
(1)通过open()创建文件对象
(2)通过open()的readline方法读取文件数据(这个输出的是一行数据)
(3)想要获取最好的3个成绩,那么首先要将数据分割(通过split分割成绩)
(4)对分割后的列表数据进行排序
(5)2-34,3:21,2.34中间的符号不一致会导致排序出问题(-和,和.),所以还需要一个函数将它们修改成一致的。
(四) 具体实现
(1) 主程序代码
from FirstPython import the_list as tl
#导入the_list模块
the_james = tl.dsfile('F:\Python\Python文件\james.txt')
#调用the_list模块的dsfile()函数读取文件数据
print(sorted(set([tl.sanitize(t) for t in the_james]),reverse=True)[0:3])
#sorted()默认升序排序,reverse=True时降序排序
#set()删除重复项,返回新的集合对象(无序的)
#[0:3]访问列表第0项、第1项、第2项的数据
'''
[tl.sanitize(t) for t in the_james] 等价于下面的代码(迭代处理the_james列表,返回一个新的列表)
new_list = []
for t in the_james:
new_list.append(tl.sanitize(t))
'''
(2) the_list模块代码
def sanitize(time_str):
#传入数据,将'-'和':'修改为'.'并返回,否则直接返回
if '-' in time_str:
(x,y) = time_str.split('-',1)
return(x+"."+y)
elif ':' in time_str:
(x,y) = time_str.split(':',1)
return (x + "." + y)
else:
return(time_str) def dsfile(the_file):
#传入一个文件,返回文件第一行数据
with open(the_file) as james_file:
each_line = james_file.readline().strip().split(',')
#strip()去除字符串中不需要的空白符,不加这个列表数据会多一个\n
#split(',')根据,分割数据,返回一个列表
return each_line
Python笔记(六):推导数据的更多相关文章
- python笔记六(函数的参数、返回值)
一 调用函数 在写函数之前,我们先尝试调用现有的函数 >>> abs(-9) 9 除此之外,还有我们之前使用的len()等.可以用于数据类型转换的 int() float() str ...
- python笔记2小数据池,深浅copy,文件操作及函数初级
小数据池就是在内存中已经开辟了一些特定的数据,经一些变量名直接指向这个内存,多个变量间公用一个内存的数据. int: -5 ~ 256 范围之内 str: 满足一定得规则的字符串. 小数据池: 1,节 ...
- Python笔记(六)_函数
函数一般是从第一行代码开始执行,结束于return语句.异常.或者函数所有语句执行完毕.一旦函数将控制权交还给调用者,就意味着全部结束.函数中做的所有工作以及保存在局部变量中的数据都将丢失.再次调用这 ...
- PHP设计模式笔记六:数据对象映射模式 -- Rango韩老师 http://www.imooc.com/learn/236
数据对象映射模式 1.数据对象映射模式,是将对象和数据存储映射起来,对一个对象的操作会映射为对数据存储的操作 2.在代码中实现数据对象映射模式,我们将实现一个ORM类,将复杂的SQL语句映射成对象属性 ...
- guxh的python笔记六:类的属性
1,私有属性 class Foo: def __init__(self, x): self.x = x 类的属性在实例化之后是可以更改的: f = Foo(1) print(f.x) # 1 f.x ...
- scala 学习笔记六 推导
1.介绍 在Scala中,推导将生成器.过滤器.和定义组合在一起. 2.例子 有一种将result用作val(而不是var)的方式,:“就地”构建result,而不是逐项构建,利用yield关键字,当 ...
- python笔记六:进程与线程
1.进程 1)调用unix/linux系统中的进程函数fork(),用法和linux相同,调用成功返回0,失败返回-1: import os print 'Process (%s) start...' ...
- python 基础(六) 推导式
列表推导式 概念:提供了一种创建列表的简单快速的途径 (1) 一般形式 myList = [x for x in range(10)] #分解后 myList = [] for x in rang ...
- MySQL数据库笔记六:数据定义语言及数据库的备份和修复
1. MySQL中的函数 <1>加密函数 password(str) 该函数可以对字符串str进行加密,一般情况下,此函数给用户密码加密. select PASSWORD('tlxy666 ...
- 孤荷凌寒自学python第六十一天在Fedora28版的linux系统上找搭建本地Mongodb数据服务
孤荷凌寒自学python第六十一天在Fedora28版的linux系统上找搭建本地Mongodb数据服务 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第七天.成功在本地搭建 ...
随机推荐
- fastjson的JSONArray转化为泛型列表
背景:一个复杂结构体内部可能有array的数据,例如:{name:"test",cities:[{name:"shanghai",area:1,code:200 ...
- 有意思的App
掘金 javadoop 专业相机也羡慕奖 – Focos 说个睡前故事 so easy 奖 – 洪恩双语绘本 效率蹭蹭上升奖 – Sorted³ 时光隧道走一回奖 – NOMO 相机 设计师也爱用奖 ...
- 深入了解preventDefault与stopPropagation
event.preventDefault()用法介绍(阻止默认事件) 该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作).例如,如果 type 属性是 "subm ...
- 如何恢复windows的exe文件的默认打开方式
事情由来: 有一次在用一个播放器选择打开视频文件的时候,意外的手贱点击打来了 exe 文件,之后戏剧性的恶心开始了,首先当然是打开失败,接着整个桌面的 exe 文件全部被替换成那个播放器的图标,然后所 ...
- postgresql 常用命令
普通用法: sudo su - postgres 切换到postgres用户下: psql -U user -d dbname 连接数据库, 默认的用户和数据库是postgres \c dbname ...
- CentOS 7通过RVM来安装指定版本的Ruby
RVM也就是Ruby Version Manager,Ruby版本管理器 1.安装依赖库: yum install gcc-c++ patch readline readline-devel zlib ...
- mysql 查找在另一张表不存在的数据
有两个表Phone_book, Call: Phone_book +----+------+--------------+ | id | name | phone_number | +----+--- ...
- Docker: vmware企业级docker镜像私服--Harbor的搭建
1.下载harbor,地址https://github.com/vmware/harbor2.进入harbor-master/Deploy目录,修改harbor.cfg文件,主要修改以下信息 ...
- 【SpringBoot系列1】SpringBoot整合MyBatis
前言: 一直看网上说SpringBoot是解锁你的配置烦恼,一种超级快速开发的框架.一直挺想学的,正好最近也有时间,就学了下 这个是SpringBoot整合MyBatis的一个教程,用了阿里的drui ...
- [转]解决Magento批量导入带图片的商品的问题
本文转自:http://www.phpstudio.info/show-121-791-1.html 一般来说,Magento后台管理里的CSV批量导入,可以解决我们商品批量上传的大部分问题,我们只要 ...