第三周学习补充
一、切片操作
[start:stop:step]为切片操作
第一个数字表示切片开始位置(默认为0)
第二个数字表示切片截至位置但截至该位置不包含在切片中(默认为列表长度)
第三个数字表示切片步长(默认为1)
切片操作可用来:
- 截取列表中的任何部分,得到一个新列表
- 修改和删除列表中的部分元素
- 作为列表对象增加元素
切片操作不影响列表对象在内存中的起始地址
二、浅拷贝与深拷贝
1.浅拷贝
浅拷贝是指生成一个新的列表,并且把原列表中所有元素的引用都复制到新列表中
- 内存地址不同
- 不是同一对象但列表元素完全相同
- 不可变数据类型
2.深拷贝
三、列表排序
- 使用列表对象的sort()方法可以进行原地排序,没有返回值(返回空值None)
aList = [3, 4, 5, 6, 7,9,11, 13, 15, 17]
import random
random.shuffle(aList)
print(aList)#[3, 4, 15, 11, 9, 17, 13, 6, 7, 5]打乱顺序
aList.sort() #默认是升序排序
aList.sort(reverse = True)#降序排序
print(aList)#[17, 15, 13, 11, 9, 7, 6, 5, 4, 3]
aList.sort(key = lambda x:len(str(x)))#按转换成字符串的长度排序
print(aList)#[9, 7, 6, 5, 4, 3, 17, 15, 13, 11]
- 使用内置函数sorted()方法对列表进行排序,该内置函数返回新列表并不对原列表进行任何修改
print(aList)#[9, 7, 6, 5, 4, 3, 17, 15, 13, 11]
print(sorted(aList))#升序排序[3, 4, 5, 6, 7, 9, 11, 13, 15, 17]
print(sorted(aList,reverse = True))#降序排序[17, 15, 13, 11, 9, 7, 6, 5, 4, 3]
- 使用列表对象的reverse()方法将所有元素原地逆序(前后交换,首尾交换)
print(aList)#[9, 7, 6, 5, 4, 3, 17, 15, 13, 11]
print(sorted(aList))#升序排序[3, 4, 5, 6, 7, 9, 11, 13, 15, 17]
print(sorted(aList,reverse = True))#降序排序[17, 15, 13, 11, 9, 7, 6, 5, 4, 3]
四、用于序列操作的常用内置函数
- len(列表)返回列表中的元素个数(也同样适用于元组、字典、集合、字符串等)
- max(列表)、min(列表):返回列表中的最大或最小元素,同样适用于元组、字典、集合、range对象等
- sun(列表):对列表的元素进行求和运算,对非数值型列表运算需要指定start参数,同样适用于元组、range