python学习(2)基础数据结构

 1. tuple元组:

 元组是长度固定,不可改变的序列。创建元组的方法是逗号;

如果想要创建一个更复杂的元组的话吗,还是要用括号,括号之间需要用逗号;

 tuple()可以把其他序列或者迭代器转换为序列,存放在元组中的object本身无法修改,但是如果tuple内部的object是可以更改的

那么可以对其进行修改。

tuple用+来合并多个元组

取出元组中元素的方法有多种,其中一种如下图所示:

python学习(2)基础数据结构

 一种元组方法,可以用来计算某个值出现的次数,list中也有这个方法,

python学习(2)基础数据结构

2. List列表

list的内容和大小都可以变;

 list函数通常用来局限化迭代器或者生成器,如下图所示:

python学习(2)基础数据结构

list添加和移除元素的常用语法:append insert pop remove、

 append: a_list.append("foo")

insert: 将元素插入到指定的位置

python学习(2)基础数据结构

  pop: 移除序列中特定位置的元素,若不指定位置,默认移除最后一个元素

python学习(2)基础数据结构

remove: 通过值移除指定的element,如果同一个值在***总多次出现,只移除第一个

python学习(2)基础数据结构

检查一个值是否在list中,用in:

python学习(2)基础数据结构

合并list:

 (1)用+号

(2)通过extend方法,可以添加多个元素

注意:用+做合并是一个运算量较大的操作,因为要创建一个新的list并复制。如果操作的是一个很大的list。用extend会

更好一些

 append和extend的区别:append是把元素添加到一个list里,extend是把两个list结合在一起

 extend和+的区别:+是创建了一个新的list并返回,运算量大;extend是在原来的list上面作了修改,运算量小

排序:

用sort函数。sort函数有一些比较方便的选项。比如设置一个sort key,这个key也是一个函数,比如我们想要按string的长度来排序

 python学习(2)基础数据结构

二分搜索和维持一个排好序的list

 内建的bisect模块可以实现二分搜索。bisect.bisect是用来寻找插入的位置,而bisect.insert则实际插入元素到指定的位置:

 注意,bisect不会检查list是否是排好序的,所以用这个模块之前要把list排序

 python学习(2)基础数据结构

切片:

 [start:stop] 输出的结果包含开头,不包含结尾。所以输出的结果的数量是stop-start,。切片可以用来输出,也可以用来修改list中的某些值

 在切片的使用中,可以不用写开头或者结尾

python学习(2)基础数据结构

负索引表示倒数开始多少个的意思

 python学习(2)基础数据结构

 两个冒号后面的数代表步长,就是隔几个元素取一次:

 python学习(2)基础数据结构

 用-1能够反转一个list或者tuple:

 python学习(2)基础数据结构

内建的序列函数:

 enumerate(枚举),能够返回一个(i,value)的tuple,通常用来把一个list中的位置和值映射到一个dict字典中

python学习(2)基础数据结构

python学习(2)基础数据结构

 sorted:该函数返回一个新的排好序的序列,而之前提到的.sort方法是直接更改原有的序列,不产生新的序列。

zip:用于pairs(成对)。把多个序列中对应的元素变成一对,最后返回一个含有tuple的list,zip可以接受任意长度的序列,最后返回的结果

取决于最短的序列。zip的一个常见用法是同时迭代多个序列,可以和enumerate搭配起来使用:

python学习(2)基础数据结构

如果给我们一个压缩过的序列,我们可以将其解压:

python学习(2)基础数据结构

reversed:可以倒叙迭代序列

python学习(2)基础数据结构

4. dict 字典

字典创建方法是用{},dict可以像list一样插入:

python学习(2)基础数据结构

可以检查dict是否有某个key:

python学习(2)基础数据结构

可以使用del或者pop删除值(注意:del和pop都是对key操作)

python学习(2)基础数据结构

直接使用keys和values方法能返回dict中key-value组合的迭代器,不过并不按照什么顺序。并且直接使用如果print出来之后会得到如下形式,

需要使用list具现化:

python学习(2)基础数据结构

可以使用update来合并两个dict,使用这种方法更改了原有的dict,不会产生新的dict:

python学习(2)基础数据结构

如果dict中某个key存在的话,就返回该value,否则的话,九返回一个默认值:

python学习(2)基础数据结构

dict中的get和pop方法能够设置默认值,即能把上面的代码简写为:

python学习(2)基础数据结构

另外一种常见用法:

python学习(2)基础数据结构

而setdefault方法是专门为这个用途存在的,上面的循环可以写成:

使用setdefault()初始化字典键值,使用字典的时候经常会遇到这样一种应用场景:动态更新字典,如果key不在dictionary中那么就添加它

并把它对应的值初始化为空列表[],然后把元素append到空列表中

python学习(2)基础数据结构

有效的key类型:

通常的key类型是不可更改的敞亮类型(int, float, string)或者tuple。可以查看一个object是否是hashable,只要是hashable,就可以当做

dict中的key。

5. Set集合

set是无序且元素不重复的。就像key唯一,且没有value的字典,两种方式可以创建,一个是用set函数,一个是用花括号:

,但是创建空set只能使用set(),因为{}是创建一个空字典。

set支持并集、交集和差集

并集表示方式:set1.union(set2)或者set1 | set2

交集表示方式:set1.intersection(set2)或者set1 & set2

注意:set的元素必须是不可更改的,如果想要list一样的元素,只能变为tuple

查看集合的关系:子集和父集:

python学习(2)基础数据结构