有这么几组数据需要你处理:

James  2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22

Julia   2.59,2.11,2:11,2:23,3-10,2-23,3:10,3.21,3-21

Mikey  2:22,3.01,3:01,3.02,3:02,3.02,3:22,2.49,2:38

Sarah  2:58,2.58,2:39,2-25,2-55,2:54,2.18,2:55,2:55

这是他们四个人跑600米花费的时间,现在需要用python实现找到每个选手跑得最快的三个时间。

首先,自然是分解数据,用split(",")得到列表。然后排序,说道排序,python里有两种排序方法:

1.原地排序:列表方法sort()排序完成后会替换掉原来的数据,原有顺序会消失

2.复制排序:内置函数sorted(),复制原有数据,在排序完成后返回,原有数据和顺序依然保留

打开IDLE试试下面的代码:

>>> data=[1,2,7,5,3,8]
>>> sorted(data)
>>> data.sort()
>>> data

那么接下来试试给上面的选手数据排序吧。

排序结果肯定不行,因为没有处理列表里的数据,仔细看数据,有2-34,3:21,2.34这些符号不同,所以要先统一符号。

统一成数字吧,这样最方便排序了。想想前面学的的东西,要怎么处理呢?关键字:循环、替换

def sanitize(timestr):
if ("-" in timestr) or (":" in timestr):
return timestr.replace("-", ".").replace(":", ".")
else:
return timestr
newdata=[]
def sortdata(data):
for item in data:
newdata.append(sanitize(item))
  return newdata print(sorted(newdata))

这里用到了两个新概念:

1.方法串链,学过js应该很熟悉了,c#也可以,但比较少用。所谓方法串链简单来说就是调用一个方法后用返回值直接调用下一个方法,所以没有返回值的方法串链会出错的。另外方法串链的顺序是自左向右。如:timestr.replace("-", ".").replace(":", ".")就是先调用replace替换-,返回的字符串再调用replace替换:

2.函数串链,同方法串链,但函数串链是从右向左执行,如:print(sorted(newdata))先用sorted函数对newdata排序,然后print函数打印

另外sort()和sorted()默认都是升序排列,如果需要降序,则需要传入参数reverse=True

如果你嫌循环的代码太多的话(这也叫多?)可以使用列表推导:

def sortdata(data):
newdata = [sanitize(item) for item in data]
  #      首先是转换    使用循环表示所有项都进行转换  最后返回列表
return newdata

你可以试试列表推导,比如将列表里的所有值乘以2,转换列表大小写等等。列表推导真的非常强大。不过也不是完满无缺,列表推导会转换列表内的所有值,所以如果你只想改变符合条件的值,还是用循环迭代吧

好了,排序完成,就可以取出前3的数据了,还记得吗newdata[0,3](再啰嗦一下:包含左边不含右边)

但还有一个问题:重复项。可以用循环判断,但这样太麻烦了,python已经给我们提供了集合来解决问题。

集合里的数据是不允许重复的,如果想往集合里添加重复项,集合会忽略。

result=set(newdata)

创建集合用set()函数,把列表里的数据放入集合,他会自动帮你去除重复项,然后在进行排序取前3,这里你能自己解决吗?

总结:

1.原地排序:排序后替换,复制排序:排序后返回,参数reverse=True可以实现降序排序

2.方法串链:从左至右,对数据应用一组方法,函数串链:从右至左,对数据应用一组函数

3.如果要转换整个列表里的值,可以使用列表推导

4.访问列表里的多个数据项可以使用分片mylist[3,6](含左不含右)

5.使用set()可以创建一个集合,集合是不允许重复数据项的

Head First Python学习笔记4——处理数据的更多相关文章

  1. 吴裕雄--天生自然python学习笔记:WEB数据抓取与分析

    Web 数据抓取技术具有非常巨大的应用需求及价值, 用 Python 在网页上收集数据,不仅抓取数据的操作简单, 而且其数据分析功能也十分强大. 通过 Python 的时lib 组件中的 urlpar ...

  2. Python学习笔记:外部数据的输入、存储等操作

    查看current工作路径: >>> import os >>> os.getcwd() 'D:\\python' 更改工作路径: >>> os. ...

  3. Python学习笔记2-解析数据

    Import os; -- Python自带 print(os.getcwd()) -- 获得当前工作目录 os.chdir('/Users/longlong/Documents') -- 转换到/U ...

  4. Python学习笔记_Chapter 4数据保存到文件

    1. What For 将基于内存的数据存储到磁盘上,达到持续存储. 2. HOW 方法一: 将数据写到文件中 常规的处理方式 #file.x被打开的文件,model打开文件的方式 out=open( ...

  5. python学习笔记之基础数据和控制

    注释: 单行注释 # 多行注释'''    ''' 注意:当注释中有汉字时需要在python文件的第一行添加如下内容之一:#coding:gbk或#coding:utf-8或##-*- coding ...

  6. Python学习笔记之将数据写入到文件中

    10-3 访客:编写一个程序,提示用户输入其名字:用户作出响应后,将其名字写入到文件guest.txt 中. 编写Python代码: username = input("Please ent ...

  7. python学习笔记3.2_数据导出

    一.data.to_csv:数据导出 1.to_csv:将数据导出为逗号分隔的文件 2.输出为其他分隔符的文件 写入到控制台,并打印:sys.stdout na_rep:对空值进行标注 二.serie ...

  8. Python学习笔记三:数据特征分析

    完成数据清理后,下面通过图表展开对数据的分析. 1.前期初判(分布分析): 1)判断分组区间: # a.散点图:plt.scatter(data[字段1],data['字段2'], s = data[ ...

  9. python学习笔记3.1_数据读取常用函数参数

    一.read_table/read_csv常用函数参数 1.path:表明文件系统位置的字符串.url或文件型对象 2.sep或delimiter:用于分隔每行字段的字符序列或正则表达式 3.head ...

随机推荐

  1. 巧用XML配置校验导入Excel的列数据格式

    <?xml version="1.0"?> <ColumnsSeting xmlns:xsd="http://www.w3.org/2001/XMLSc ...

  2. BroadcastReceive的使用

    一.注册方式 intent.setAction("BC_One"); 1.静态注册 <receiver  android:name = "继承BroadcastRe ...

  3. 在html页面添加一个隐藏域,并渲染一个需要保存的数值,在js中需要再获取,而不影响页面结构

    <div style="display:none">可以将需要保存的数值放在文本内容中,也可以放在标签的属性当中, 如果放在文本内容中,注意换行后 \n 的存在< ...

  4. jzoj4724

    DJL为了避免成为一只咸鱼,来找czgj学习Fibonacci数列. 通过czgj的谆谆教导,DJL明白了Fibonacci数列是这样定义的: F(1)=1;F(2)=1;F(n)=F(n-1)+F( ...

  5. eclipse常见使用方法

    1.修改字体大小,字符类型(设置为中欧字符) window-preferences-General-Appearance-Colors and Fonts-Basic-Text Font修改 2.展示 ...

  6. zoj4020 Traffic Light(bfs+状态压缩)

    题意:每个点有两种状态,0/1,0表示只能上下方向走,1表示只能左右方向走.每走一步整个图的状态改变一次(即0->1,1->0). 数据范围:n,m<=1e15 开始迷之因为数组太大 ...

  7. 创建一个vue项目,vue-cli,webpack

    ,换成淘宝源: npm config set registry https://registry.npm.taobao.org/ 检查是否修改成功 npm config get registry ,安 ...

  8. SELECT 三级联动 [转]

    <!DOCTYPE html> <html> <head> <meta charset=gbk /> <title>selectList&l ...

  9. 爬虫常用库之pyquery 库

    pyquery库是jQuery的Python实现,可以用于解析HTML网页内容,我个人写过的一些抓取网页数据的脚本就是用它来解析html获取数据的.他的官方文档地址是:http://packages. ...

  10. json,DataTable,model

    1.DataTable转json public class DataTableConvertJson { #region dataTable转换成Json格式 /// <summary> ...