序列
- 序列是一种数据存储方式,用来存储一系列数据。在内存中,序列就是一块用来存放多个值的连续的内存空间。
- 序列中存储的是对象的地址,而不是对象的值。
- 序列包括列表、元组、字典、集合、字符串
列表
- 列表:用于存储任意数目、任意类型的数据集合。
- 列表是内置可变序列,是包含多个元素的有序连续的内存空间。
- 列表的标准语法结构:a = [10,20,30,40] 其中10,20,30,40这些称为列表a的元素
- 列表中的元素可以各不相同,可以是任意类型。如 a = [10,20,'abc',True]
- Python的列表大小可变,根据需要随时增加或缩小。
列表的创建
- 基本语法 [ ] 创建
a = [10,20,'yiyangqianxi','llily'] b = [] #创建一个空的列表对象 print(a)
- list()创建:使用list()可以将任何可迭代的数据转化成列表。
a = list() #创建一个空的列表对象 b = list(range(10)) #结果:[0,1,2,3,4,5,6,7,8,9] b = list("lily,Tom") #结果:['l','a','o','q','i',',','s','x','t']
- range()创建整数列表:语法格式为
range([start,]end[,step]) start参数:可选,表示其实数字。默认是0 end参数:必选,表示结尾数字 step参数:可选,表示步长,默认为1
🎈注意:range()返回的是一个range对象,而不是列表。需要通过list()方法将其转换成列表对象。(包头不包尾)
a = list(range(3,15,2)) #结果:[3,5,7,9,11,13] b = list(range(15,9,-1)) #结果:[15,14,13,12,11,10] c = list(range(3,-4,-1)) #结果:[3,2,1,0,-1,-2,-3] print(a,b,c)
推导式生成列表:十分方便,结合for循环和if语句使用
#循环创建多个元素[0,2,4,6,8] a = [x*2 for x in range(5)] #通过if过滤元素[0,18,36,54,72,90,108,126,144,162,180,198] b = [x*2 for x in range(100) if x%9==0] print(a,b)
列表元素的添加方式
- 列表增加和删除元素时,列表会自动进行内存管理,大大减少了程序员的负担。但这一特点涉及列表元素的大量移动,效率较低。
- 除非必要,一般只在列表的尾部添加元素或删除元素,提高列表的操作效率。
append()
- 原地修改列表对象,列表尾部添加新的元素,速度最快,推荐使用。
a = [20,40] a.append(80) print(a) #结果:[20,40,80]
insert()
- 可以将指定元素插入到列表对象的任意制定位置。
- 使用insert()会让插入位置后面所有的元素进行移动,影响处理速度,涉及大量元素时们尽量避免使用。类似函数有:remove()、pop()、del(),这些函数在删除非尾部元素时也会发生操作位置后面元素移动。
a = [10,20,30] a.insert(2,100) print(a) #结果:[10,20,100,30]
extend()
- 将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象。
a = [20,40] print(id(a)) b = [50,60] a.extend(b) #原对象修改 print(id(a)) a = a+b #产生新对象 print(id(a))
+运算符操作
- 尾部添加 生成新列表
- 不是真正的尾部添加元素,而是创建新的列表对象;将原列表的元素和新列表的元素依次复制到新的列表对象中。会涉及大量的复制操作,对于操作大量元素不建议使用。
a = [20,40] print(id(a)) a = a + [50] print(id(a)) #两次地址不一样,创建了新的对象
乘法扩展
- 使用乘法扩展列表,生成一个新列表,新列表元素是原列表元素的多次重复。
a = ['lily',100] b = a*3 print(a) #结果:['lily',100] print(b) #结果:['lily',100,'lily',100,'lily',100]
- 适用于乘法操作的还有字符串、元组。
a = 'lily' b = a*3 print(b) 结果为:'lilylilylily'
列表元素的删除
- 删除元素底层是:元素的拷贝
del删除
- 删除列表指定位置的元素
a = [100,200,888,300,400] del a[2] print(a) #结果:[100,200,300,400]
pop()方法
- pop()删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个元素。
a = [10,20,30,40,50] b = a.pop() #结果:b1 = 50 print(a,b) #结果:[10,20,30,40] 50 c = a.pop(1) print(a,c) #结果ÿ