1. 数据结构
数据结构主要包括:数组(Array)、集合(Set)、列表(List)、队列(Queue)、链表(Linkedlist)、树(Tree)、堆(Heap)、栈(Stack)和字典(Dictionary)等
Python中数据容器主要有:
序列、集合和字典
注意:Python中没有数组结构
序列(sequence)
-
序列特点
:可迭代的、有序的、元素可以重复 -
序列包括的
结构
有:列表(list)、字符串(str)、元祖(tuple)、范围(range)和字节序列(bytes) -
序列可进行的
操作
有:索引、分片、加和乘
序列的分片(Slicing)就是从序列中且分出小的子序列,分片运算符有两种形式:
①
[start:end]
:
start
是开始索引,
end
是结束索引
②
[start:end:step]
:
start
是开始索引,
end
是结束索引,
step
是步长。步长可以为正整数,也可以为负整数。
因此可用于倒置序列:
a = a[::-1]
1.1. 元祖
-
元组:一种不可变的序列,一旦创建不可以修改
创建元素可以使用
tuple([iterable])
函数或者直接用逗号
,
将元素分割 -
访问元组:索引访问元素、分片、拆包(Unpack)
a = ('Hello','World',1,2,3) str1,str2,*n = a # 拆包 # str1 = 'Hello' # str2 = 'World' # n = [1,2,3] # 列表
-
遍历元组:遍历序列一般都是用
for
循环a = (5,4,3,2,1) for idx, item in enumerate(a): print("{0} - {1}".format(idx,item ))
1.2. 列表(list)
也是一种序列,与元组的区别是:元素无法修改,而列表可修改,包括追加、删除、替换和插入
-
列表创建
list([iterable])
函数,或者用中括号
[]
将元素包裹,元素之间用逗号
,
分隔 -
追加元素
①
append()
方法:追加单个元素
②
+
运算符或
extend()
方法:追加另外一个列表 -
插入元素
list.insert(i, x)
:
i
指要插入的索引,
x
是要插入的元素 -
替换元素
-
删除元素
①
remove(x)
方法,
x
是要删除的元素,如果没有
x
元素,会抛出异常
②
pop()
方法,
pop(i)
删除
i
索引值,
pop()
删除最后面的元素,有 返回值:删除的元素 -
其他常用方法
①
reverse()
:倒置列表
②
copy()
:复制列表
③
clear()
:清除列表中的所有元素
④
index(x[,i[,j]])
:返回查找x第一次出现的索引,
i
是开始查找索引,
j
是结束查找索引
⑤
count(x)
:返回
x
出现的次数 -
列表推导式
n_list = [x ** 2 for x in range(10) if x % 2 == 0] print(n_list) # 相当于 n_list = [] for x in range(10): if x % 2 == 0: n_list.append(x ** 2) print(n_list) # 多个条件时 n_list = [x for x in range(100) if x % 2 == 0 if x % 5 == 0] n_list = [x for x in range(100) if x % 2 == 0 and x % 5 == 0]
1.3. 集合
-
集合的特点:集合中的元素是无序的、不能重复的。包含可变集合和不可变集合
-
创建可变集合
set([iterable])
函数,或者用大括号
{}
-
修改可变集合
①
add(elem)
:添加元素,如果元素已经存在则不能添加,且不会抛出错误
②
remove(elem)
:删除元素,如果元素不存在,则抛出错误
③
discard(elem)
:删除元素,如果元素不存在,不会抛出错误
④
pop(elem)
:删除返回集合中的任意一个元素,返回值是删除的元素
⑤
clear()
:清除集合 -
遍历集合
:
for in
-
不可变集合
frozenset([iterable])
函数,不能使用大括号
{}
student_set = frozenset(['张三','李四','王五','王五'])
-
集合推导式
n_set = { x ** 2 for x in range(10) if x % 2 == 0} print(n_set)
1.4. 字典
dict
是可以迭代的、可变对象
-
创建字典
dict()
函数,或者用大括号
{}
将“键:值”对包裹,“键:值”对之间用逗号分隔dict1 = { 102: '张三', 105: '李四', 109: '王五'} print(dict1) dict2 = dict(S102='张三', S105='李四', S109='王五') print(dict2) print(dict1[102]) print(dict2['S102'])
注意:特殊形式创建
dict(key1=value1,key2=value2,key3=value3...)
,
key
必须是字符串,而且字符串要省略单引号或双引号
-
修改字典
①添加
②替换
③删除:
del
语句、
pop(key[,default])
方法和
popitem()
方法dict1 = { 102: '张三', 105: '李四', 109: