Head Frist Python 读书笔记 第五章 处理数据

Bullet Option:

  • sort(*, key=None, reverse=None)

sort方法用于原地排序,可以接收两个keyword-only参数,并且此方法是的排序是稳定的。

key:一个表达式,比较时会根据该表达式的计算结果进行排序

reverse:默认False,升序排列;True,降序排列

默认使用升序排列

>>> source=[5,2,8,4,3,6,7]
>>> source.sort()
>>> print(source)
[2, 3, 4, 5, 6, 7, 8]

reverse=True,使用降序排列

>>> source=[5,2,8,4,3,6,7]
>>> source.sort(reverse=True)
>>> print(source)
[8, 7, 6, 5, 4, 3, 2]

key用于输入计算权重的方法,排序会按照权重排序,而不是按照原值排序

>>> def cal_priority(target):
    return 0-target

>>> source=[5,2,8,4,3,6,7]
>>> result=[cal_priority(item) for item in source]
>>> print(result)
[-5, -2, -8, -4, -3, -6, -7]
>>> source.sort(key=cal_priority)
>>> print(source)
[8, 7, 6, 5, 4, 3, 2]
  • sorted(iterable[, key][, reverse])

sorted()方法与sort()方法类似,不过前者会返回一个新的列表,原列表不会有影响。

  • 列表推导

列表推导是非常有趣的一个功能,在前面sort()方法中就已经使用到了,简洁的语法可以在使用中节省不少代码。

>>> def cal_priority(target):
    return 0-target

>>> source=[5,2,8,4,3,6,7]
>>> result=[cal_priority(item) for item in source]
>>> print(result)
[-5, -2, -8, -4, -3, -6, -7]

通过语法结构也可以很清晰的了解是怎么做的,整体的阅读方向是从右向左:

首选一对“[]”说明这个会返回一个列表,其中的“for item in source”说明需要对一个目标列表进行循环操作,“cal_priority(item)”表示要对这个循环中的每个数据怎么计算。

  • 分片

分片也是有效节省代码的方法,简单的“:”就可以轻松筛选出列表中指定部分,甚至可以轻松的复制列表

list[m:n]表示返回列表第m个位置到第n个位置的列表项,但不包括第m个位置,如果m、n为空,则返回原列表的拷贝

>>> source=[1,2,3,4,5,6]>>> print(source[2:5])
[3, 4, 5]
>>> result=source[:]
>>> print(result)
[1, 2, 3, 4, 5, 6]
>>> result=[]
>>> print(source)
[1, 2, 3, 4, 5, 6]
  • class set([iterable])

看了文档才发现,其实这是个class,而不是一个方法OTZ。集合类的一个应用场景就是去重,效果立竿见影。

除了去重这个,集合本身也是很有趣的数据结构,可是实现很多有意思的功能。

python中还有一种叫做class frozenset([iterable])的集合类型,顾名思义,frozenset是被冻住的,不能修改其中的数据。

>>> source=[5,5,7,2,8,4,3,4,6,7]
>>> sourceset=set(source)
>>> print(sourceset)
{2, 3, 4, 5, 6, 7, 8}

为什么输出是排序过的,重复了好多次都是这样???

时间: 2024-10-10 14:17:29

Head Frist Python 读书笔记 第五章 处理数据的相关文章

Head Frist Python 读书笔记 第六章 定制数据对象

Bullet Points: 定义Class python中的class和JavaScript中的类似(后悔没有认真看JS),原则只有一个“方法是共享的,而属性不共享” class AthleteList: def __init__(self,a_name,a_dob=None,a_times=[]): self.name=a_name self.dob=a_dob self.times=a_times def top3(self): return sorted(set([float(sanit

《Linux内核设计与实现》读书笔记 第五章 系统调用

第五章系统调用 系统调用是用户进程与内核进行交互的接口.为了保护系统稳定可靠,避免应用程序恣意忘形. 5.1与内核通信 系统调用在用户空间进程和硬件设备间添加了一个中间层, 作用:为用户空间提供了一种硬件的抽象接口:保证了系统的稳定和安全,避免应用程序不正确使用硬件,窃取其他进程的资源,或做出危害系统的行为:为了实现多任务和虚拟内存. Linux提供的系统调用比大部分操作系统少得多. 5.2 API.POSIX.和C库 一个API定义了一组应用程序使用的编程接口.(API和系统调用不是一一对应)

《Python基础教程》 读书笔记 第五章(下)循环语句

5.5.1while循环 x=1 while x<=100: print x x+=1 确保用户输入了名字: name="" while not name: name=raw_input('please enter your name:') print 'hello,%s!'%name 5.5.2for循环 while语句非常灵活.它可以用来在任何条件为真的情况下重复执行一个代码块.一般情况下这样就够用了,但是有些时候还得量体裁衣.比如要为一个集合(序列和其他可迭代对象)的每个元

《利用python进行数据分析》读书笔记--第五章 pandas入门

pandas是本书后续内容的首选库.pandas可以满足以下需求: 具备按轴自动或显式数据对齐功能的数据结构.这可以防止许多由于数据未对齐以及来自不同数据源(索引方式不同)的数据而导致的常见错误.. 集成时间序列功能 既能处理时间序列数据也能处理非时间序列数据的数据结构 数学运算和简约(比如对某个轴求和)可以根据不同的元数据(轴编号)执行 灵活处理缺失数据 合并及其他出现在常见数据库(例如基于SQL的)中的关系型运算 pandas数据结构介绍 两个数据结构:Series和DataFrame.Se

Python读书笔记-第三章,四章

第三章 1. 字符串格式化 >>>format="hello %s  %s world" >>>values=('world','hot') >>>print format % values  #也可以接收单个字符串也 也可以用%f %d这类的类似与c的printf 匹配多个参数的时候应该用圆括号 >>>'%s plus %s equals %s'  %(1,1,2) >>>'%010.2f' %

Head Frist Python 读书笔记 列表推导(list comprehension)

列表推导(list comprehension)是个挺有意思的功能,应该是一个语法糖吧,列表推导这个名字大概是意译,不过list comprehension这个真不知道该怎么翻译. 列表推导是Python支持函数编程概念的一个例子. 列表推导的功能是减少代码书写量,可以省点事情,本来需要两行的,现在只需要一行. 比如说要对一个list中的所有数据都进行相同的处理,通常可以这么写: data=[1,2,3,4,5,6] result=[] for item in data: result.appe

APUE读书笔记-第五章 标准I/O库

今天草草的把第四章结了,后面的内容分析的也不是很详细,就连书中的例子都没有怎么实验,还是等以后有机会吧. 从5.3节开始研究起吧,这一节主要谈了一个进程预定义的3个流,分别是标准输入.标准输出和标准错误,通过stdin.stdout.stderr引用.这里要和进程中的文件描述符STDIN_FILENO.STDOUT_FILENO.STDERR_FILENO相区分. /* Standard streams. */ extern struct _IO_FILE *stdin; /* Standard

C primer plus 读书笔记第五章

本章的标题是运算符,表达式和语句.主要研究如何处理数据. 示例代码展示了一个使用简单的while循环的代码,难度不大. 下面简单介绍本章的基本概念. 1.基本运算符. 基本运算符有:赋值运算符(C语言可以多重赋值,例如cheeta = tarzan = 68),加法运算,减法运算符,符号运算符(也称为一元运算符),乘法运算符,除法运算符(整数除法结果的小数部分会丢弃,而整数除浮点数的时候,编译器是先将整数转换为浮点数) 2.其他运算符 有sizeof,size_t,%(注意负数的情况),++,-

《linux内核设计与实现》读书笔记第五章——系统调用

第5章 系统调用 操作系统提供接口主要是为了保证系统稳定可靠,避免应用程序恣意妄行. 5.1 与内核通信 系统调用在用户空间进程和硬件设备之间添加了一个中间层. 该层主要作用有三个: 为用户空间提供了一种硬件的抽象接口. 系统调用保证了系统的稳定和安全 每个进程都运行在虚拟系统中,而在用户空间和系统的其余部分提供这样一层公共接口. 5.2 API.POSIX和C库 1.API可以在各种不同的操作系统实现,给应用程序提供完全相同的接口,而它们本身在这些系统上的实现却可能迥异. 2.在Unix世界中