第三章 Python序列结构
3.1 Python序列概述
有序序列:
列表、元组、字符串
无序序列:
字典、集合
可变序列:
列表、字典、集合
不可变序列:
元组、字符串
3.2 列表
包含若干元素的有序连续内存空间 同一个列表元素的数据类型可以各不相同。 可以同时包含整数、实数、字符串等基本类型元素 可以包含列表、元组、字典、集合、函数以及其他任意对象 空对象:只有一对方括号而没有任何元素
3.2.1 列表创建与删除
a_list = []
a_list = list()
a_list = [3, 5, 7, 9, 11]
tup_list = list((3, 5, 7, 9, 11))
ran_list = list(range[1, 10, 2])
str_list = list('hello world')
set_list = list({3, 7, 5})
dic_list = list({'a':3, 'b':9, 'c':78})
dic_items_list = list({'a':3, 'b':9, 'c':78}.items())
del a
3.2.2 列表元素访问
使用整数作为下标访问任意位置上的元素 eg:0,表示列表第一个元素 还支持使用负整数作为下标 eg:-1,表示列表倒数第一个元素
3.2.3 列表常用方法
1.append()、insert()、extend()
append()用于向列表尾部追加一个元素 insert()用于向列表任意指定位置插入一个元素 extend()用于将另一个列表中的所有元素追加值当前列表的尾部
2.pop()、remove()
pop()用于删除并返回指定位置(默认最后一个)上的元素;指定位置不是合法索引抛出异常 remove()用于删除列表中第一个与指定值相等的元素;列表中不存在该元素抛出异常 del命令删除指定位置上的元素
3.count()、index()
count()用于列表中返回指定元素出现的次数 index()用于返回指定元素在列表中首次出现的位置;该元素不在列表中则抛出异常
4.sort()reverse()
sort()用于按照指定的规则对列表中的所有元素进行原地排序 reverse()用于将列表的所有元素原地翻转
3.2.4 列表对象支持的运算符
+连接两个列表,得到一个新列表 *用于列表和整数相乘,表示序列重复,返回新列表 in用于测试列表中是否包含某元素 关系运算符用来比较两个列表的大小
3.2.5 内置函数对列表的操作
x = list(range(11))
import random
random.shuffle(x)
all(x)
any(x)
max(x)
min(x)
sum(x)
len(x)
3.2.6 列表推导式
[表达式 for 变量 in 旧列表]
[表达式 for 变量 in 旧列表 if 条件]
3.2.7 切片
[start:end:step]
start:表示切片开始位置,默认为0;start为0时可省略
end:表示切片截至位置(左闭右开),默认为列表长度;end为列表长度时可省略
step:表示切片的步长,默认为1;step为1时可省略,省略步长时还可以省略最后一个冒号
1.使用切片获取列表部分元素 2.使用切片为列表增加元素 3.使用切片替换和修改列表元素 4.使用切片删除列表元素 5.结合使用del命令与切片删除列表中的部分元素
3.3 元组与生成器表达式
3.3.1 元组创建与元素访问
x = ()
x = tuple()
x = (1, 2, 3)
3.3.2 元组与列表的异同点
相同点:
都属于有序列表 都支持使用双向索引访问其中的元素 都可使用count()方法统计指定元素出现的次数 使用index()方法获取指定元素的索引
不同点:
元组属于不可变序列 不可以直接修改元组中元素的值 无法为元组增加或删除元素 元组支持切片操作,但是只能通过切片来访问元组中的元素
3.3.3 生成器表达式
只在需要时生成新元素 使用时,可以根据需要转化为列表或元组 可以使用生成器对象的__next()__方法或内置函数next()进行遍历 直接使用for进行遍历 只能从前往后正向访问每个元素 不可以再次访问已访问过的对象 不支持使用下标访问其中的元素 enumerate、filter、map、zip等其他迭代器也具有不可以再次访问已访问过的对象的特点
3.4 字典
包含若干“键:值”元素的无序可变序列 表示一种映射或对应关系,也称关联数组 键可以是Python中任意不可变数据 但不能使用列表、字典、集合或其他可变类型作为字典的键 键不可以重复,值可以重复
3.4.1 字典的创建与删除
x = dict()
x = {}
Dict = {'a':1, 'b':2}
keys = ['a', 'b', 'c', 'd']
values = [1, 2, 3, 4]
d = dict(zip(keys, values))
d = dict(name='Dong', age=30)
aDict = dict.fromkeys(['name', 'age', 'sex'])
del aDict
3.4.2 字典元素的访问
aDict = {'a':1, 'b':2}
aDict['a']
aDict['c']
aDict.get('a')
aDict.get('c','Not exists.')
for item in aDict:
print(item)
for item in aDict.items():
print(item)
for item in aDict.keys():
print(item)
aDict.items()
aDict.keys()
aDict.values()
3.4.3 元素的添加、修改与删除
当以指定键作为下标为字典元素赋值时
该键存在,则表示修改该键对应的值 该键不存在,则表示添加一个新的“键:值”对,也就是添加一个新元素 使用字典对象的update()方法可以将另一个字典的“键:值”一次性全部添加到当前的字典对象,如果两个字典中存在相同的“键”,则以另一个字典中的“值”为准,对当前字典进行更新 使用字典对象的pop()和popitem()方法弹出并删除指定的元素
aDict = {'a':1, 'b':2}
aDict.popitem()
aDict.pop('b')
3.5 集合
无序可变序列 同一个集合内每个元素唯一,不允许重复 集合中只能包含数字、字符串、元组等不可变类型的数据 不能包含列表、字典、集合等可变类型数据
3.5.1 集合对象的创建与删除
a = {3, 5}
a_set = set(range(8, 14))
b_set = set([1,2,2,3])
x = set()
3.5.2 集合操作与运算
(1)集合元素增加与删除
add()方法可增加新元素,若该元素已存在则忽略该操作,不会抛出异常 update()方法用于合并另一个集合中的元素到当前集合,并自动去除重复元素 pop()方法用于随机删除并返回集合中的元素,指定元素不存在则抛出异常 discard()方法用于从集合中删除一个指定元素,元素不存在则忽略该操作
(2)集合运算
内置函数len()、max()、min()、sum()、sorted()、map()、filter()、enumerate() 支持数学意义上的交集、并集、差集等运算 关系运算符>、>=、<、>=作用于集合时表示集合之间的包含关系
a_set = set([8,9,10,11,12,13,14])
b_set = {0,1,2,3,7,8}
a_set | b_set
a_set & b_set
a_set - b_set
a_set ^ b_set
3.6 序列解包
对多个变量同时进行赋值的简洁形式 把一个序列或可迭代对象中的多个元素的值同时赋给多个变量 要求等号左侧变量的数量和等号右侧值的数量必须一致
|