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数据库的第七天.成功在本地搭建 ...
随机推荐
- configure: error: You need a C++ compiler for C++ support.[系统缺少c++环境]
一.错误configure: error: You need a C++ compiler for C++ support.二.安装c++ compiler情况1.当您的服务器能链接网络时候[联网安装 ...
- tensorflow进阶篇-4(损失函数3)
Softmax交叉熵损失函数(Softmax cross-entropy loss)是作用于非归一化的输出结果只针对单个目标分类的计算损失.通过softmax函数将输出结果转化成概率分布,然后计算真值 ...
- JavaSE-java8-谓词复合的用法
谓词接口包括三个方法: negate. and 和 or,让你可以重用已有的Predicate来创建更复杂的谓词 一.比如可以用negate方法来返回一个Predicate非 public class ...
- Jfinal QuartzPlugin 简单使用案例
之前一直使用spring quartz感觉还挺好用的,就想着jfinal是不是也可以使用quartz插件,于是发现了QuartzPlugin和jfinal-scheduler<参考:https: ...
- Android 开发工具类 35_PatchUtils
增量更新工具类[https://github.com/cundong/SmartAppUpdates] import java.io.File; import android.app.Activity ...
- IntelliJ IDEA(Ultimate版本)的下载、安装和WordCount的初步使用(本地模式和集群模式)
不多说,直接上干货! IntelliJ IDEA号称当前Java开发效率最高的IDE工具.IntelliJ IDEA有两个版本:社区版(Community)和旗舰版(Ultimate).社区版时免费的 ...
- Java队列——线程池创建的例子
线程池为线程生命周期开销问题和资源不足问题提供了解决方案.通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上.其好处是,因为在请求到达时线程已经存在,所以无意中也消除了线程创建所带来的延迟.这 ...
- Oracle Comment 获取并修改表或字段注释
select * from dba_tables where owner = 'DINGYINGSI'; select * from user_col_comments where table_nam ...
- Hibernate常出现的报错
刚开始学习hibernate的时候,第一次就遇到了空指针异常,结果是我的配置文件处理错误(主要是数据库表的字段与就java实体类的属性名单词写错了):一般是报空指针异常的话,多半是配置文件的问题. 但 ...
- Java NIO 进程间通信
转自:http://blog.csdn.net/lingzhm/article/details/45026119 传统的进程间通信的方式有大致如下几种: (1) 管道(PIPE) (2) 命名 ...