目录
数据结构:通过某种方式组织在一起的数据元素集合,这些数据结构可以是任何数据类型。最基本的数据结构是序列。
一、序列
序列的每个元素都被分配一个编号,这个编号成为索引,序列中第一个元素的索引为0。列表和元组都是序列。
(1).一个序列,可以包含不同类型的值。
(2).序列中的元素可以是另外一个序列,相当于二维数组或多位数组。
1.序列的基本操作
(1)通过索引操作序列元素。如:names[0]
- 索引是0或者整数时,从序列左侧第一个元素开始取值;索引是负数时,从右侧第一个元素(索引为-1)开始取值。
- 当索引值超出序列的索引范围时,会抛出异常。
(2) 切片:从一个序列中获取一个子序列:序列名(起始索引:结束索引:步长)
- 切片操作需要指定两个索引,两个索引间用(:)分隔,第二个索引值为序列子序列最后一个元素的索引加1(即不包含),字符串的切片操作相当于截取字符串。
- 如果两个索引中有一个是序列的起止索引,可以省略该索引。
- 默认步长为1,可以设置步长获取特定子序列,步长的正负控制切片取值方向。
- 从左向右取,第一个索引必须小于第二个索引;从右向左取,第一个索引必须大于第二个索引。否则会返回空序列。
(3)序列的相加,即将序列连接成一个新的序列,必须是同一种序列,如列表只能与列表相加。
(4)序列的乘法:序列乘以一个数字n会生成一个新的序列,新序列中原来的序列将被重复n次。
(5)检查某个值是否属于一个序列:in、not in
(6)序列的长度、最大值和最小值
- len函数返回序列中元素的个数
- max函数返回序列中值最大的元素
- min函数返回序列中值最小的元素
- max和min函数的参数不仅可以是一个序列,还可以是可变参数。
注意:使用max和min函数时,序列中每个元素值必须是可比较的。如:
print(max("abc", "a","ab"))#输出:abc print(max(["abc", 1]))#不可直接比较,抛出异常
二、列表
列表可以使用所有序列的一般操作,也有自己的特殊操作。
1.列表元素赋值,通过列表中的索引,使用(=)进行赋值。如:a[0]="Li"
2.删除列表元素:del语句。如:del a[0]
3.切片赋值:用另一个列表修改原来列表的子列表,赋值时被替换的子列表和新子列表可以不等长。可以利用这一特性在列表中插入或者删除一些元素。
#输出:['Bill', 2, 3, 4, 5, 'Mike', 'Mary', 'Kitty', 'Jack']
arr=["Bill","Mike","Mary","Kitty","Jack"]
arr[1:1]=[2,3,4,5]
print(arr)
#输出:['Bill', 5, 'Mike', 'Mary', 'Kitty', 'Jack']
arr[1:4]=[]
print(arr)
4.列表方法
列表提供了一些用于检查和修改列表中内容的方法。如下:
- append:在列表最后添加元素
- clear:用于清除列表的内容
- copy:复制列表
- count:统计某个元素在列表中出现的次数
- extend:用于在列表结尾插入另一个列表。类似于列表相加,但extend方法改变的是被扩展的列表,而列表相加产生了一个新的列表
- index:从列表中找出某个值第一次出现的索引位置。
- insert:将值插入到列表的指定位置
- pop:移除列表中的元素(默认最后一个),并返回该元素的值。
- remove:移除列表中某个值第一次的匹配项。
- reverse:列表元素反转
- sort:对列表排序。会改变原来的列表。待排序的列表元素必须是可比较的。
#第一个Kitty元素被删除,输出:['Bill','Mike', 'Mary', 'Jack', 'Kitty'] arr=["Bill","Mike","Mary","Kitty","Jack","Kitty"] arr.remove("Kitty") print(arr)
三、元组
1.元组是只读的,不能修改。
2.定义元组:用逗号(,)分隔一些值。也可以将元组用小括号括起来。
3.创建只有一个元素的元组:该元素后加逗号。
4.创建空元组:()
5.可以使用tuple()函数可以将序列转换为元组。
6.为什么要使用元组?
(1)元组可以在映射中作为键值使用,而列表不能。
(2)很多内建函数和方法的返回值就是元组。如果要使用这些返回值,就必须使用元组。