学习内容:
序列
常用的序列结构:字符串、列表、元组、字典、集合。
序列是一种数据存储方式,用来存储一系列的数据,是一块用来存放多个值的连续的内存空间。
序列中存储的都是对象的地址,不是值。
列表
列表是内置可变序列,是包含多个元素的有序连续的内存空间。
列表中的元素可以各不相同,任意类型。
列表的大小可变,根据需要随时增加或减少。
列表对象的常用方法 | 说明 |
---|---|
list.append(x) | 增加,将元素x增加到列表list尾部 |
list.extend(aList) | 增加,将列表aList所有元素增加到列表list尾部 |
list.insert(index,x) | 增加,将元素x插入到列表指定位置index |
list.remove(x) | 删除,将列表list中第一个出现的元素x删除 |
list.pop([index]) | 删除,删除并返回列表list指定为index的元素为止,默认则是最后一个元素 |
list.clear() | 删除所有元素,并不是删除列表对象 |
list.index(x) | 访问元素,返回第一个x的索引位置,若不存在则抛出异常 |
list.count(x) | 计数,返回指定元素x在列表中出现的次数 |
list.reverse() | 所有元素原地翻转 |
list.sort(x) | 所有元素原地排序 |
list.copy(x) | 返回列表对象的浅拷贝 |
len(list) | 列表长度,返回列表中包含元素的个数 |
(一)列表的创建
1.基本语法[ ]创建
a = []
创建一个空的列表对象,或者加入元素。
2.list()创建
a = list()
a = list(range(10))
range是一个对象,可以用list()把任何可迭代的数据转化成列表。
3.range()创建整数列表
range(start , end , step)
start:可选,默认0
end:必选,表示结尾数字
stop:可选,默认1
range()在python返回的是一个range对象,不是列表,需要转换成列表。
4.推导式生成
a = [x*2 for x in range(5)]
循环创建多个元素,得到 a =[0,2,4,6,8]
a = [x*2 for x in range(100) if x%9 == 0]
通过if语句过滤元素,得到 a =[0,18,36,54,72,90,108,126,144,162,180,198]
(二)列表元素的增加和删除
列表增加和删除元素时,列表会自动进行内存管理,减少了负担,但是涉及列表元素的大量移动,效率低。一般只在尾部增加或删除元素。
1.append()尾部增加单个元素
a.append()
2.extend()尾部增加多个元素
a.extend([ 20 , 30 ])
append在列表尾部增加元素;extend在列表尾部增加目标列表的所有元素。都不改变量的地址,效率较高。
用 a = a + [ ],运算符操作会变成新的变量,有大量复制操作。
3.insert()插入元素
a.insert(1,20)
插入位置后面的元素会移动,影响处理速度。其他还有remove() ,pop(), del()等也会影响速度处理。
4.del()删除元素
a.del(1)
删除指定位置的元素,后面的元素会前移
5.pop()删除元素并返回
a.pop()
删除并返回指定元素,如果未指定位置则默认列表最后一个元素。
6.remove()删除指定元素
a.remove(100)
删除首次出现的指定元素,不存在则抛出异常。
(三)列表元素的访问和计数
1.通过索引直接访问元素
a[ ]
索引区间在[ 0 , 列表长度-1] ,超出这个范围就会抛出异常。
2.index()指定元素在列表中首次出现的位置
a.index(200)
a.index(200,3)
a.index(200,5,9)
语法index(value,[start,[end]]),start和end是列表的位置,索引的都是在指定范围内元素首次出现的位置。
3.count()获得指定元素出现的次数
a.count(20)
4.len()获得列表中元素的个数
len(a)
5.成员资格判断
判断列表中是否存在指定的元素。用count(),返回0表示不存在。
也可以用 in 关键字,返回True或False
20 in a
“abc” in a
“abc” not in a
(四)切片操作
切片适用于列表、元组、字符串。标准格式:[start : end [: step ]] ,注意起始和结束为位置,则包头不包尾。
(五)列表的遍历
for x in list:
print(x,end = ‘#’)
遍历列表里的每个元素,每个元素加一个#隔开。
(六)列表的排序
1.修改原列表排序,不建新列表。
a.sort()
默认升序排序
a.sort(reverse=True)
降序排列
import random
random.shuffle(a)
打乱列表顺序
2.建立新的列表排序
a = sorted(a)
a = sorted(a,reverse=True)
3.reversed()返回迭代器
c = reversed(a)
c是一个迭代器,只能用一次,显示时要用list()
list©
(六)多维列表
1.一维列表
存储一维、线性的数据。
2.二维列表
存储二维的数据。在列表内存储表格的信息。
a[0]
a[0][3]
加2个位置可以检索第m个元素中的第n个元素。
3.嵌套循环打印二位列表中的所有数据
for m in range(3)
for n in range(4)
print (a[m][n], end=‘\t’)
print() #打印完一行,换一行
m是外面一层列表,有3个value,n是列表内的元素列表,每个元素有4个value