head first python(第五章)–学习笔记
admin
2023-07-31 01:51:24
0

1.排序有两种方式

原地排序(in-place sorting),按指定的顺序排列数据,然后用排序后的数据替换原来的数据。原来的顺序会丢失。

sort()

复制排序(copied sorting),按你指定的顺序排序,然后返回原数据的一个有序副本。原数据的顺序依然保留。

sorted()

方法串联(method chaining)

第一个方法应用到数据中,然后再将处理好的数据应用到第二个方法中。从左向右读。

例子:

data.strip().split(\’,\’)

函数串联(function chaining)

每个函数会取得数据,对他完成某个操作,然后把转换后的数据继续向下传递到下一个函数。 从右向左读。

例子:

print(sorted(james))

2.数据不一致导致排序中出现问题,需要整理数据

创建一个函数,传入时间参数,然后将不一致的(-,:)数据清除掉,然后将其分割为分和秒,然后整合在一起,形成统一时间格式 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…

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...