Python内置数据结构——列表

知识框架图

Python内置数据结构——列表

学习笔记

数据结构分类

数值

int、float、complex、bool都是class

int:长整型,没有上限,取决于内存区域大小

float:支持十进制和科学计数法,仅支持双精度

complex:复数,有实数和虚数部分

bool:int的子类,True、False对应1、0,可以和整数直接运算

序列对象

字符串str

列表list

元组tuple

键值对

集合set

字典dict

类型转换

int(x):取整数部分

float(x):返回浮点数

complex(x)、complex(x、y):返回复数

bool(x):返回bool值

数字处理函数

round():四舍六入五取偶

.5:整数部分为偶数,向下取整;整数部分为奇数,向上取整

math模块,floor():向下取整

math模块,ceil():向上取整

x//y:x/y结果向下取整

min()

max()

pow(x,y):x**y

math.sqrt():开方

进制转换,返回字符串

bin()

oct()

hex()

math.pi π

math.e 自然常数

类型判断

type(obj):返回值为类型,而不是字符串

obj为不同类型相加时,做隐式类型转换

isinstance(obj,class_or_tuple):返回bool值

列表

队列

列表内的个体称为元素,有若干元素组成列表

元素可以是任意对象(数字、字符串、对象、列表),对象为列表时称为嵌套列表

列表内元素有顺序,可以使用索引

列表是线性的数据结构

使用[ ]表示

列表是可变的

各种数据结构的特点和差异

列表list:线性编址、内存上连续的地址空间;可迭代、可索引;可变的;允许在中间插入

链表:散落,手拉手,指针

队列queue:线性编址;不允许在中间插入;先进先出

栈stack:后进先出

列表操作

初始化定义

list():定义新的空列表

list(iteratable):使用可迭代对象初始化列表

列表不能一开始就定义大小

索引访问

索引,下标

正索引,从左至右,从0开始

负索引,从右至左,从-1开始

索引不能超界,否则引发IndexError

list[index]:使用索引访问列表中的元素

列表查询

index(value,[start,[stop]])

在指定区间查找与value匹配的元素

匹配第一个立即返回索引,匹配不到抛出ValueError异常

只能从左向右查找,不能使用负索引

时间复杂度O(n)

count(value)

返回列表中匹配value的次数

时间复杂度O(n)

len(list):列表元素的个数

修改元素

list[index] = value,索引不能超界

增加、插入元素

append(obj)

在列表尾部追加元素,返回None,不产生新的列表,就地修改

时间复杂度O(1)

insert(index,obj)

在指定index处插入元素obj,返回None,不产生新的列表,就地修改

时间复杂度O(n)

index超出上界或下界则在尾部或头部追加

extend(iteratable)

将可迭代对象追加到列表中,返回None,不产生新的列表,就地修改

+

连接操作,将两个列表连接起来,产生新的列表,原列表不改变

本质上是调用_add_()方法

*

重复操作,将本列表元素重复n次,返回新的列表

复杂类型或引用类型:列表中再嵌套列表,使用*重复操作时,实际只是复制了内层元素的内存地址指向,结果是所有元素都指向同一内存地址,在这种情况下,修改任意内层元素,其他元素也会跟着改变

删除元素

remove(value)

从左至右查找第一个匹配value的值,移除该元素,返回None,就地修改

时间复杂度O(n)

pop([index])

不指定index,则从尾部弹出一个元素

指定index,则将index处元素弹出,索引超界IndexError错误

clear()

清空列表中的所有元素,留下空列表

其他操作

reverse()

将列表元素反转,返回None,就地修改

in

判断列表的从属关系或在指定列表中迭代

sort(key=None,reverse=False)

对列表元素进行排序,就地修改,默认升序

reverse为True则降序排列

key为函数,指定kay如何排序

sorted(iterable[, key][, reverse])

生成新的列表,不修改原有列表

列表复制

shadow copy

浅拷贝,影子拷贝,遇到引用类型时只是复制内存地址

deepcopy

深拷贝,遇到引用类型时将内存地址指向位置的内容原样复制

随机数

random

randint(a,b):返回[a,b]之间的整数

choice(seq):从非空序列中随机返回一个元素

randrange([start,] stop [,step]):从指定范围内返回一个随机数

shuffle(list):就地打乱列表元素

sample(m,n):从列表m中随机返回n个不同元素

原创文章,作者:ZBD20,如若转载,请注明出处:http://www.178linux.com/93132

(0)
ZBD20ZBD20
上一篇 2018-03-26
下一篇 2018-03-26

相关推荐