(一)  准备工作

创建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笔记(六):推导数据的更多相关文章

  1. python笔记六(函数的参数、返回值)

    一 调用函数 在写函数之前,我们先尝试调用现有的函数 >>> abs(-9) 9 除此之外,还有我们之前使用的len()等.可以用于数据类型转换的 int() float() str ...

  2. python笔记2小数据池,深浅copy,文件操作及函数初级

    小数据池就是在内存中已经开辟了一些特定的数据,经一些变量名直接指向这个内存,多个变量间公用一个内存的数据. int: -5 ~ 256 范围之内 str: 满足一定得规则的字符串. 小数据池: 1,节 ...

  3. Python笔记(六)_函数

    函数一般是从第一行代码开始执行,结束于return语句.异常.或者函数所有语句执行完毕.一旦函数将控制权交还给调用者,就意味着全部结束.函数中做的所有工作以及保存在局部变量中的数据都将丢失.再次调用这 ...

  4. PHP设计模式笔记六:数据对象映射模式 -- Rango韩老师 http://www.imooc.com/learn/236

    数据对象映射模式 1.数据对象映射模式,是将对象和数据存储映射起来,对一个对象的操作会映射为对数据存储的操作 2.在代码中实现数据对象映射模式,我们将实现一个ORM类,将复杂的SQL语句映射成对象属性 ...

  5. guxh的python笔记六:类的属性

    1,私有属性 class Foo: def __init__(self, x): self.x = x 类的属性在实例化之后是可以更改的: f = Foo(1) print(f.x) # 1 f.x ...

  6. scala 学习笔记六 推导

    1.介绍 在Scala中,推导将生成器.过滤器.和定义组合在一起. 2.例子 有一种将result用作val(而不是var)的方式,:“就地”构建result,而不是逐项构建,利用yield关键字,当 ...

  7. python笔记六:进程与线程

    1.进程 1)调用unix/linux系统中的进程函数fork(),用法和linux相同,调用成功返回0,失败返回-1: import os print 'Process (%s) start...' ...

  8. python 基础(六) 推导式

    列表推导式 概念:提供了一种创建列表的简单快速的途径 (1) 一般形式 myList = [x for x in range(10)] ​ #分解后 myList = [] for x in rang ...

  9. MySQL数据库笔记六:数据定义语言及数据库的备份和修复

    1. MySQL中的函数 <1>加密函数 password(str) 该函数可以对字符串str进行加密,一般情况下,此函数给用户密码加密. select PASSWORD('tlxy666 ...

  10. 孤荷凌寒自学python第六十一天在Fedora28版的linux系统上找搭建本地Mongodb数据服务

    孤荷凌寒自学python第六十一天在Fedora28版的linux系统上找搭建本地Mongodb数据服务 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第七天.成功在本地搭建 ...

随机推荐

  1. Ruby:Net::HTTP

    待续... Github上有几个关于Net::HTTP的使用例子:Ruby Net::HTTP cheat sheet Net::HTTP的官方文档 Ruby net/http example这篇文章 ...

  2. 《Java多线程编程核心技术》——多线程与同步

    Java多线程 线程可以理解为是在进程中独立运行的子任务. Java多线程 使用方法 Java中实现多线程主要有以下两种方法: 继承Thread,而后实例化该对象调用start()即启动了新线程; 实 ...

  3. pyenv docter检测出configure: error: OpenSSL is not installed.解决方案

    1 在安装相应版本的python时,前声明 CFLAGS=-I/usr/include/openssl \ LDFLAGS=-L/usr/lib64 \ pyenv install -v 3.5.1

  4. Spring开发步骤

    1) 源码, jar文件:此处用的是spring-framework-3.2.5.RELEASE commons-logging-1.1.3.jar                日志 spring- ...

  5. PHP MYSQL登陆和模糊查询

    PHP MYSQL登陆和模糊查询   PHP版本 5.5.12    MYSQL版本 5.6.17  Apache 2.4.9 用的wampserver 一.PHPMYSQL实现登陆:  一共含有两个 ...

  6. PTA (Advanced Level) 1003 Emergency

    Emergency As an emergency rescue team leader of a city, you are given a special map of your country. ...

  7. <Think Python>中斐波那契使用memo实现的章节

    If you played with the fibonacci function from Section 6.7, you might have noticed thatthe bigger th ...

  8. angular enter事件,angular回车事件

    angular回车键搜索,angular enter搜索 对于搜索框,用户在输入内容后的搜索习惯不是鼠标点击搜索按钮,而是直接按enter键,那我们怎么给enter键绑定事件呢,其实很简单,代码如下: ...

  9. 在FireFox浏览器上,用stopImmediatePropagation阻止冒泡鼠标滚动事件

    楔子 是不是在火狐用stopPropagation不太满意 很久没有笑过又不知为何 既然不快乐又不喜欢这里 不如一路向西用stopImmediatePropagation(其实我对浏览器的兼容性看不顺 ...

  10. ASP.NET MVC显示UserControl控件(扩展篇)

    昨晚Insus.NET有怀旧一下<念念不忘,ASP.NET MVC显示WebForm网页或UserControl控件>http://www.cnblogs.com/insus/p/3641 ...