数据分析之python数据结构和序列

每个数据结构都是语言设计者的精心设计,推导式也是有趣的部分

python的数据结构,函数和文件

  1. 数据结构和序列,函数,文件讲分为3个部分进行叙述

数据结构和序列

python的数据结构有元组,列表,字典,集合

元组

元组是一个固定长度,不可改变的python序列对象,创建元组最简单的方式就是用逗号进行分隔

IMAGE

如何元组中某个对象是可变的,可以在原位上进行修改

IMAGE

元组可以相接与复制

IMAGE

拆分元组

拆分和数值交换

IMAGE

拆分迭代元组或者列表序列

IMAGE

tuple方法

元组有一个方法和列表保持一致是叫做count,可以统计某个值出现的频率

IMAGE

列表

与元组对比,列表的长度可变,内容可以被修改,可以用方括号定义,或者用list函数

IMAGE

添加和删除元素

IMAGE

通过in或者not in可以检查列表是否包含该数据

IMAGE

串联和组合列表

IMAGE

排序

通过使用sort函数对一个列表原地排序

IMAGE

二分搜索和维护已排序的列表

在python中bisect模块支持二分查找和向已排序的列表插入值

IMAGE

切片

切片的目的主要选取大多数序列类型的一部分,切片的基本形式就是strat:stop

切片的起始元素是包含的,但不包含结束元素,因此结果中包含的元素个数为stop-start

IMAGE

递进切片

IMAGE

切片的规律可以如下图所示

IMAGE

序列函数

enumerate函数

迭代一个序列的时候,想知道当前项的序号

IMAGE

sorted函数

sorted函数可以从任意序列的元素返回一个新的排好序的列表

IMAGE

zip函数

zip函数可以将多个列表,元组或其它序列组合成一个元组列表

IMAGE

reversed函数

reversed可以从后向前迭代一个序列

IMAGE

字典

字典是python最为重要的数据结构,也可以叫做哈希映射或关联数组.以键值的方式构成,键值都可以是python对象

创建字典的方法之一是使用尖括号,用冒号进行键和值的分隔

IMAGE

删除的2种方式

IMAGE

键值的迭代与字典融合

IMAGE

通过序列创建字典

IMAGE

对单词进行分类

IMAGE

关于有效的键类型

键通常是不可变的标量类型,list是不被允许的

IMAGE

集合

集合是无序,不可重复的元素的集合,可以理解为字典,只有键没有值,创建集合有2种方式,通过set函数或者使用尖括号set语句

IMAGE

集合支持合并,交集,等集合运算

IMAGE

集合中常用的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
S.add(e) 在集合中添加一个新的元素e;如果元素已经存在,则不添加
S.remove(e) 从集合中删除一个元素,如果元素不存在于集合中,则会产生一个KeyError错误
S.discard(e) 从集合S中移除一个元素e;
S.clear() 清空集合内的所有元素
S.copy() 将集合进行一次浅拷贝
S.pop() 从集合S中删除一个随机元素;如果此集合为空,则引发KeyError异常
S.update(s2) 用 S与s2得到的全集更新变量S
以下内容可以用运算符操作代替
S.difference(s2) 用S - s2 运算,返回存在于在S中,但不在s2中的所有元素的集合
S.difference_update(s2) 等同于 S = S - s2
S.intersection(s2) 等同于S & s2
S.intersection_update(s2) 等同于S = S & s2
S.isdisjoint(s2) 如果S与s2交集为空返回True,非空则返回False
S.issubset(s2) 如果S与s2交集为非空返回True,空则返回False
S.issuperset(...) 如果S为s2的子集返回True,否则返回False
S.symmetric_difference(s2) 返回对称补集,等同于 S ^ s2
S.symmetric_difference_update(s2) 用S 与 s2的对称补集更新 S
S.union(s2) 生成 S 与 s2的全集

列表,集合,字典推导式以及嵌套推导式

语法格式如下:[expr for val in colletion if condition]

IMAGE

嵌套推导式(稍难)

IMAGE