序列
序列是一种数据结构,其中的元素带编号(编号从0开始)。列表、字符串和元组都属于序列,其中列表是可变的(你可修改其内容),而元组和字符串是不可变的(一旦创建,内容就是固定的)。序列都可以进行的操作包括索引、切片、相加、相乘和检查成员
一、 列表
1. 通用的列表操作
1.1 列表的创建
只要把逗号分隔的不同的数据项使用方括号括起来即可
空列表是使用不包含任何内容的两个方括号表示
如果要创建一个可包含10个元素的空列表(即表示还没有在列表中添加任何内容),
这种情况在可使用None(表示什么都没有)
1.2 列表的索引
列表可以使用下标索引来访问列表中的值
字符串就是由字符组成的序列。索引0指向第一个元素,-1指向最后一个元素
1.3 切片
除了使用索引来访问单个元素外,还可以使用切片来访问特定范围内的元素。其中第一个索引号是包含第一个元素的编号(即第一个索引指定的元素包含在切片内),但第二个索引号是切片后余下的第一个元素的编号(第二个索引指定的元素不包含在切片内),第三个索引号为步长,是指当取出前一项时,移动多少个元素去取下一个值(若没有这一项,默认为1),也可以使用负数来表示列表
1.4 列表的相加和相乘
可以使用“+”操作符来拼接序列(不能拼接列表和字符串一般而言,不能拼接不同类型的序列)
可以使用“*”操作符来创建一个新序列
1.5 列表的成员资格
要检查特定的值是否包含在序列中,可使用运算符in。它检查是否满足指定的条件,并返回相应的值:满足时返回True,不满足时返回False。这样的运算符称为布尔运算符,而前述真值称为布尔值
1.6 列表的嵌套
使用嵌套列表即可在列表里创建其他列表
2. 列表的函数
2.1 len()
返回序列包含的元素个数
2.2 max()/min()
返回序列中最大/最小的元素
2.3 list()
将序列转换为列表,如果参数是列表,就原封不动的地返回它;如果参数是字符串,也转换为列表
3. 列表的基本操作
3.1 修改列表
使用索引来给特定位置的元素赋值
3.2 删除元素
使用del()语句删除列表的元素,会改变列表的长度
3.3 给切片赋值
使用切片可以同时给多个元素赋值。通过使用切片赋值,可以将列表替换为长度与其不同的列表
使用切片赋值话可以在不替换原有元素的情况下插入新元素
使用切片赋值还可以删除切片
4. 列表方法
4.1 append()
用于将一个对象附加到列表末尾append也就地修改列表。这意味着它不会返回修改后的新列表,而是直接修改旧列表
4.2 clear()
就地清空列表的内容
4.3 copy()
用于复制列表。常规复制只是将另一个名称关联到列表
要让a和b指向不同的列表,就必须将b关联到a的副本
4.4 count()
计算指定的元素在列表中出现的次数
4.5 extend()
能同时将多个值附加到列表末尾,可使用一个列表来扩展另一个列表
这看起来类似于拼接,但有一个重要差别,那就是将修改被扩展的列表(这里是a)。常规拼接中,返回一个全新的列表
4.6 index()
在列表中查找制定你元素第一次出现的索引
4.7 insert()
用于将一个元素插入元素
4.8 pop()
从列表中删除一个元素(默认为最后一个元素),并返回这一元素。pop是唯一既修改列表又返回一个非None值的列表方法
4.9 remove()
用于删除第一个为指定值的元素,就地修改且不返回值
4.10 reverse()
按相反的顺序排列列表中的元素,修改列表,但不返回任何值
如果要按相反的顺序迭代序列,可使用函数reversed()。这个函数不返回列表,而是返回一个迭代器,可使用list将返回的对象转换为列表
4.11 sort()
用于对列表就地排序。就地排序意味着对原来的列表进行修改,使其元素按顺序排列,而不是返回排序后的列表的副本,修改列表且不返回任何值
sort对需要排序后的列表副本并保留原始列表不变时,通常会遇到以下错误
为获取排序后的列表的副本,可使用函数sorted()
4.12 高级排序
sort(cmp=None, key=None, reverse=False)
cmp
用于比较的函数,比较什么由key决定
key
参数key类似于参数cmp:可以将其设置为一个用于排序的函数。然而,不会直接使用这个函数来判断一个元素是否比另一个元素小,而是使用它来为每个元素创建一个键,再根据这些键对元素进行排序。因此,要根据长度对元素进行排序,可将参数key设置为函数len
reverse
对于另一个关键字参数reverse,只需将其指定为一个真值(True或False,),以指出是否要按相反的顺序对列表进行排序
函数sorted也接受参数key和reverse
二、元组
元组是一种静态的或者说不可变的数据结构,里面的元素按照一定的顺序排列。与列表一样,元组也是序列,唯一的差别在于元组是不能修改的。列表用[]中括号括起,元组用圆括号括起
1. 通用的元组操作
1.1 元组的创建
只需在括号中添加元素,并使用逗号隔开即可(不加括号也可以)
空元组用两个不包含任何内容的圆括号表示
元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
1.2 元组的索引
元组可以使用下标索引来访问元组中的值(0表示第一个元素,-1表示最后一个元素)
1.3 元组的切片
切片通过构造一个索引号的范围可以同时获得元组中的多个值。第一个元素表示切片开始的地方(包含此索引号),第二个元素表示切片结束的地方(不包含此索引号),第三个元素表示步长,是指当取出前一项时,移动多少个元素去取下一个值(若没有这一项,默认为1),也可使用负数形式的索引号来访问元组
1.4 元组的连接和复制
操作符可以被用来连接或复制元组。连接通过“+”来完成,复制通过“*”来完成
“+”操作符可以将两个或者多个元组连接在一起
“*”操作符可以用来复制元组
2. 元组的函数
1.1 len()
用来计算元组的长度
1.2 max()/min()
当处理数值型的元组时(包括整数和浮点数),可以使用max()和min()函数去找到某一特定元组的最大值和最小值
1.3 tuple()
将一个序列作为参数,并将其转换为元组。如果参数已经是元组,就原封不动地返回它。