第三次课---python序列
1.序列是一种数据存储方式,用来存储一系列的数据
2.在内存中,序列就是一块用来存放多个值的连续的内存空间
4.python中一切皆为对象,所以从上可以看出,序列存储的是整数对象的地址,而不是整数对象的值
5.python中常用到的序列有:字符串,元组,列表,字典,集合
列表
1.可以用来存放任意数目,任意类型数据
2.是内置可变序列,是包含多个元素的有序连续的内存空间
3.大小可变,根据需要随时增加或减小
a = [1,2,3,4,5,...]---可任意数目
b = [1,2,3,"fdj",True]---可任意类型
c = [1,1,1,2,34,5] --可重复
列表的创建
上面的图中range中的start,step是可选的,end是必选的
列表中的元素的增,删,访问-----列表会自动进行内存管理,增删会涉及列表元素的大量移动
1.append(obj)---原对象上增加列表的元素,尾部添加,速度快,该方法没有返回值
----a的地址没有发生改变
2.“+”操作符
可以看到"+"尾部添加,不是在原对象上添加,而是产生了新的对象,会将原对象中的值和新列表中的值一起复制到新的对象中,会涉及大量的复制操作。
3.extend(seq)---将目标列表中的所有元素添加到尾部,是在原对象中添加,不创建新的对象,没有返回值
seq -- 元素列表,可以是列表、元组、集合、字典,若为字典,则仅会将键(key)作为元素依次添加至原列表的末尾。
4.insert(index,obj)---将要插入的元素,插入到指定的位置,涉及后面的元素需要移动, 该方法没有返回值
5.乘法扩展---与字符串一样,使用"*",如*3,则表示列表中的元素重复三次
6.删除---del ----不能超过下标进行删除,否则报错
7.移除列表中的一个元素----pop([index=-1]),返回该元素的值,当不指定的时候,默认移除最后一个元素,删除元素后,后面的元素向前移动
8.删除第一次出现的指定元素---remove(obj), 该方法没有返回值但是会移除列表中的某个值的第一个匹配项。
---从左至右
列表元素的访问和计数
1.直接通过下标进行访问,【0,length - 1】
2.index(obj [,start,[end])----通过指定元素在列表中第一次出现的位置,start从0开始,end以end - 1作为终止, 该方法返回查找对象的索引位置,如果没有找到对象则抛出异常。
3.count(obj)---返回obj该对象在列表中出现的次数,如果没有,则返回0
列表的长度---len(list),返回列表的长度
某元素是否在该列表中
1.使用count--如果返回0,则表示没有在列表中
2.使用"in"来判断是否在列表中,如果在,则返回True,否则,返回false,也可以使用"not in"
切片操作----与字符串相似---[起始偏移量start:终止偏移量end[:步长step]],start从0开始,end从end-1终止,step可以省略
从图左边可以看到最后三个的结果不正确,说明理解出现了错误
print(a[-2:]) #结果为:[[34,56,"dfjjks",True],True,"jdfskaf",45,67,45,23]----这里说即使是从列表倒数第二个元素,即[[34,56,"dfjjks",True]开始,也是往左边去,而不是往右边
print(a[-3:-5]) #结果为:[True,"jdfskaf",45,67]----因为上面提过只能往左边去,不能往右边,所以这个本身就有问题
print(a[::-2]) #结果为:[56,"jdfskaf"45]----步长表示隔几个位置取一个值,从倒数第一个元素开始(步长包括它,即它+倒数第二个就是二个步长,所以,第二取出的元素是True)
切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始 偏移量小于 0 则会当做 0,终止偏移量大于“长度-1”会被当成”长度-1”。
列表的遍历
for obj(元素) in listObj(列表对象)
print(obj)
---报错,因为print是从属于for的在这种情况下,所以需要在print使用tab键
复制列表
从图中看到有三种方法,第一,二种种,id一样,说明只是b,c也指向了a的地址,而在三种中,产生了新的对象
copy()---- 返回复制后的新列表,类似于a[:]
列表排序
1.不产生新的对象,在原有的对象上排序---sort(reverse=False)
其中:reverse = True,则降序 reverse = Flase,则升序
无返回值,但会对原对象进行排序
2.产生新的对象---sorted(listObj,reverse=True)---返回新的对象,默认降序
列表中的最大值---max(listObj),最小值---min(listObj),数值型求和---sum(listObj)---非数值型求和,报错
当列表含有数值型和字符串时,使用min,max报错
当列表含有数值型,布尔型时,使用min,max,sum正常
当列表中只含有字符串时,使用min,max正常
当列表中有字符串,布尔型时,使用min,max,sum报错
二位列表---用于存储二维,表格数据。