摘要:原来的顺序会丢失。原数据的顺序依然保留。方法串联第一个方法应用到数据中,然后再将处理好的数据应用到第二个方法中。例子函数串联每个函数会取得数据,对他完成某个操作,然后把转换后的数据继续向下传递到下一个函数。
1.排序有两种方式
原地排序(in-place sorting),按指定的顺序排列数据,然后用排序后的数据替换原来的数据。原来的顺序会丢失。
sort()
复制排序(copied sorting),按你指定的顺序排序,然后返回原数据的一个有序副本。原数据的顺序依然保留。
sorted()
方法串联(method chaining)2.数据不一致导致排序中出现问题,需要整理数据第一个方法应用到数据中,然后再将处理好的数据应用到第二个方法中。从左向右读。
例子:
data.strip().split(",")
函数串联(function chaining)每个函数会取得数据,对他完成某个操作,然后把转换后的数据继续向下传递到下一个函数。 从右向左读。
例子:
print(sorted(james))
创建一个函数,传入时间参数,然后将不一致的(-,:)数据清除掉,然后将其分割为分和秒,然后整合在一起,形成统一时间格式 MM:SS 。
def sanitize(time_string): if "-" in time_string: splitter = "-" elif ":" in time_string: splitter = ":" else: return(time_string) (mins, secs) = time_string.split(splitter) return(mins + "." + secs)
然后修改代码
def sanitize(time_string): if "-" in time_string: splitter = "-" elif ":" in time_string: splitter = ":" else: return(time_string) (mins, secs) = time_string.split(splitter) return(mins + "." + secs) with open("james.txt") as jaf: data = jaf.readline() james = data.strip().split(",") with open("julie.txt") as juf: data = juf.readline() julie = data.strip().split(",") with open("mikey.txt") as mif: data = mif.readline() mikey = data.strip().split(",") with open("sarah.txt") as saf: data = saf.readline() sarah = data.strip().split(",") clean_james = [] clean_julie = [] clean_mikey = [] clean_sarah = [] ---------臃肿的部分------------ for each_t in james: clean_james.append(sanitize(each_t)) for each_t in julie: clean_julie.append(sanitize(each_t)) for each_t in mikey: clean_mikey.append(sanitize(each_t)) for each_t in sarah: clean_sarah.append(sanitize(each_t)) print(sorted(clean_james)) print(sorted(clean_julie)) print(sorted(clean_mikey)) print(sorted(clean_sarah)) ---------臃肿的部分------------3.不过代码看来十分臃肿,学会使用推导列表
clean_mikey = [] for each_t in mikey: clean_mikey.append(sanitize(each_t))
变成
clean_mikey = [sanitize(each_t) for each_t in mikey] 新列表 转换方法 for循环 列表
append动作隐含在里面了。
推导列表有点奇怪,不过写多几次就熟悉了。
[m * 60 for m in mins] [s.upper() for s in lower] [float(s) for s in clean]
使用推导列表后,程序简化了
print(sorted([sanitize(t) for t in james])) print(sorted([sanitize(t) for t in julie])) print(sorted([sanitize(t) for t in mikey])) print(sorted([sanitize(t) for t in sarah]))4.只需要前三项数据
可以使用列表分片
如:
james[0:3]5.删除重复项
有2种方法:
1.用集合的方法,集合的特性是数据是无序的,而且不允许重复。
james = {10.6,11,10.6} distances = set(james) #set()就是集合的方法
这样distances出来的数据就是无序且不重复的。
2.用遍历的方法
unique_james = [] for each_t in james: if each_t not in unique_james: #判断是否在数组中,不在就放进新的数组 unique_james.append(each_t)
BTW:
python中有两种类型的列表,一种是可以改变的列表(用中括号包围),一种是不可改变的列表(用小括号包围)-叫元组tuple,还有一种不是列表,是集合,用大括号包围。
原文引用:http://www.godblessyuan.com/2015/04/27/head_first_python_chapter_5_lea...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/37546.html
摘要:在指定位置删除并返回这个数据项,注意这里是有返回项的。移除某一个特定数据项。第二章发布并上传代码到在查阅大量资料发布和上传还有很多附属文件需要编写和上传以确保模块能够正常发布和更新。包含函数串链,特点是中包含函数。 写在前面:吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。登高而招,臂非加长也,而见者远;顺风而呼,声非加疾也,而闻者彰。假舆马者,非利足也,而致千里;假...
摘要:可以通过定位参数和关键字参数传入的形参多数函数的参数属于此类。就像数据格式化一样数据带上标签自行创建函数它会自行创建函数。创建的函数会在对象上调用参数指定的方法自己创建函数冻结参数这个高阶函数用于部分应用一个函数。 高阶函数 接受函数为参数,或者把函数作为结果返回的函数是高阶函数 def reverse(word): return word[::-1] ...
摘要:消息向迭代器获取所表示的底层序列的下一个元素。为了对方法调用做出回应,迭代器可以执行任何计算来获取或计算底层数据序列的下一个元素。这个迭代器应拥有方法,依次返回序列中的每个元素,最后到达序列末尾时产生异常。 第五章 序列和协程 来源:Chapter 5: Sequences and Coroutines 译者:飞龙 协议:CC BY-NC-SA 4.0 5.1 引言 在这一章中,我...
showImg(http://source1.godblessyuan.com/blog_head_first_python_chapter_4_20150426.jpg); 其实持久存储不仅仅包含文件,还包括数据库等,本章先介绍一部分,先熟悉一下。 熟悉python数据 #!/usr/bin/python # -*- coding: utf-8 -*- man = [] other =...
阅读 2110·2023-04-26 00:09
阅读 3139·2021-09-26 10:12
阅读 3507·2019-08-30 15:44
阅读 2874·2019-08-30 13:47
阅读 935·2019-08-23 17:56
阅读 3241·2019-08-23 15:31
阅读 489·2019-08-23 13:47
阅读 2527·2019-08-23 11:56