列表基础
- 创建列表
创建一个空列表
List = []#空列表
创建一个含有元素的列表
List = [1,2,3,4,"列表","元素"]
创建一个多类型元素列表
List = [2,45.13,3,4,5,"嵌套列表"] # 包含 整数、浮点数、字符串
创建嵌套列表
List = [1,(1,2,3,4),"列表","元素",{"元素":"列表"}] # 包含数字、元组、字符串、字典
-
访问元素
列表访问主要包括:索引、切片、循环
索引是指对应元素所在的位置,与下标是一个意思,索引是从0开始
使用索引获取列表里的内容
List=["第1个元素","第2个元素","第3个元素","第4个元素","第5个元素"]
print(List[0])
print(List[1])
print(List[2])
print(List[3])
输出结果:
第1个元素
第2个元素
第3个元素
第4个元素
使用切片正向索引获取列表里的内容
List=["第1个元素","第2个元素","第3个元素","第4个元素","第5个元素"]
print(List[1:4])
输出结果:
['第2个元素', '第3个元素', '第4个元素']
使用切片反向索引索引获取列表里的内容
List=["第1个元素","第2个元素","第3个元素","第4个元素","第5个元素"]
print(List[-1])
输出结果:
第5个元素
通过反向索引取出所有元素
List = ["第1个元素","第2个元素","第3个元素","第4个元素","第5个元素"]
print(List[::-1])
输出结果:
['第5个元素', '第4个元素', '第3个元素', '第2个元素', '第1个元素']
使用两个冒号获取带间隔的序列元素,两个冒号后的数字就是间隔长度
List = ["第1个元素","第2个元素","第3个元素","第4个元素","第5个元素"]
print(List[::2])
输出结果:
['第1个元素', '第3个元素', '第5个元素']
切片的完全形态 开始:结束:间隔
List = ["第1个元素","第2个元素","第3个元素","第4个元素","第5个元素"]
print(List[1:4:2])
输出结果:
['第2个元素', '第4个元素']
使用for循环和enumerate函数来取出列表的索引
List = ["第1个元素","第2个元素","第3个元素","第4个元素","第5个元素"]
for i in enumerate(List):
print(i)
输出结果:
(0, '第1个元素')
(1, '第2个元素')
(2, '第3个元素')
(3, '第4个元素')
(4, '第5个元素')
- 添加元素
使用append添加元素,每次添加一个,列表的尾部添加
List = ["第1个元素","第2个元素","第3个元素","第4个元素","第5个元素"]
List.append("添加第1个元素")
print(List)
List.append("添加第2个元素")
print(List)
输出结果:
['第1个元素', '第2个元素', '第3个元素', '第4个元素', '第5个元素', '增加一个元素']#末尾处是新增的元素
['第1个元素', '第2个元素', '第3个元素', '第4个元素', '第5个元素', '添加第1个元素', '添加第2个元素']#末尾处是新增的第2个元素
使用insert添加元素,在指定的位置添加元素
List = ["第1个元素","第2个元素","第3个元素","第4个元素","第5个元素"]
List.insert(0,"在0的位置添加一个元素")
print(List)
输出结果:
['在0的位置添加一个元素', '第1个元素', '第2个元素', '第3个元素', '第4个元素', '第5个元素']#0的位置元素变成了,新添加的元素
使用extend 方法实现批量添加元素时未创建一个新的列表,而是直接添加在原列表中
List=[1,3,5,7,8]
List.extend([10,20,30,40])
print(List)
输出结果:
[1, 3, 5, 7, 8, 10, 20, 30, 40]#批量添加元素
使用+拼接列表,也可以完成批量元素的添加,但实际是创建了一个新列表
List=[1,3,5,7,8]
List1 = List + [20,30,40,50]
print(List)
print(List1)
输出结果:
[1, 3, 5, 7, 8] #原列表
[1, 3, 5, 7, 8, 20, 30, 40, 50]#新创建列表
- 删除元素
删除元素的方法有三种:remove,pop,del
remove 直接删除元素,若被删除元素在列表内有多个,则只删除一个
List = ["第1个元素","第2个元素","第3个元素","第4个元素","第4个元素"]
List.remove("第4个元素")# 注:remove 直接写要删除的元素
print(List)
输出结果:
['第1个元素', '第2个元素', '第3个元素', '第4个元素']#只删除了一元素
pop 不带参数默认删除列表最后一个元素;若带参数则删除此参数代表的索引处的元素
List = ["第1个元素","第2个元素","第3个元素","第4个元素","第5个元素"]
List.pop()
print(List)
List.pop(0)
print(List)
List.pop(-2)
print(List)
输出结果:
['第1个元素', '第2个元素', '第3个元素', '第4个元素']# 不带参数的输出结果
['第2个元素', '第3个元素', '第4个元素', '第5个元素']# 带参数的时候,根据索引删除对于元素
['第1个元素', '第2个元素', '第3个元素', '第5个元素']# 可以使用正向索引和反向索引删除
del与pop类似,删除指定索引处的元素
List = ["第1个元素","第2个元素","第3个元素","第4个元素","第5个元素"]
del List[0] # 注意写法 del + 列表的索引
print(List)
del List[-1]
print(List)
输出结果:
['第2个元素', '第3个元素', '第4个元素', '第5个元素']#删除第0个元素
['第1个元素', '第2个元素', '第3个元素', '第4个元素']#删除最后一个元素
- List其他操作
in 与可迭代容器的结合,还用于判断某个元素是否属于此列表
List = [1,2,3,4,5]
if 4 in List:
print(True)
else:
print(False)
-----------------------------------------------------------------------------------------
List = [1,2,3,4,5]
if 7 in List:
print(True)
else:
print(False)
输出结果:
True
False
内置的list与数字结合,实现元素的复制
List = ["Hi"]*4
print(List)
输出结果:
['Hi', 'Hi', 'Hi', 'Hi']
使用列表与数字相乘构建二维列表,然后第一个元素赋值为[1,2],第二个元素赋值为[3,4]
List = [[]]*2
List[0]=[1,2]
List[1]=[3,4]
输出结果:
[[1, 2], [3, 4]]
列表生成式 使用列表生成式创建1到10的所有数列表
列表生成式 使用列表生成式创建1到10的所有奇数列表
List =[i for i in range(1,11)]
List =[i for i in range(1,11) if i&1 ]
输出结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 3, 5, 7, 9]
- 常用API
clear 用于清空列表内的所有元素
List =[1,2,3,4,5]
List.clear()
print(List)
输出结果:
[]# 一个空列表
index 用于查找里面某个元素的索引
List =[1,2,3,4,5]
List.index(1)
print(List.index(1))
List.index(5)
print(List.index(5))
输出结果:
0 # 1的索引是0
4 # 5的索引是4
count用于统计某元素的出现次数
List =[1,2,3,4,5,3,5,5,3,3,2]
List.count(3)
print(List.count(3))
List.count(5)
print(List.count(5))
输出结果:
4 #3这个元素出现4次
3 #5这个元素出现3次
sort 用于元素排序,注:sort 方法不适合 int 和 str 类型的比较,list 和 str 不能相互比较
List =[1,30,50,48,66]
List.sort()#升序排列
print(List)
List.sort(reverse=True)#降序排列
print(List)
输出结果:
[1, 30, 48, 50, 66] #升序排列
[66, 50, 48, 30, 1] #降序排列
reverse 完成列表反转,注:reverse与切片[::-1]区别,切片有返回值,reverse没有返回值
List = ["第1个元素","第2个元素","第3个元素","第4个元素","第5个元素"]
List.reverse()
print(List)
输出结果:
['第5个元素', '第4个元素', '第3个元素', '第2个元素', '第1个元素']
列表是可变的,可变的对象是不可哈希的,不可哈希的对象不能被映射,因此不能被用作字典的键
List=[1,3]
dict ={List:'不能被哈希'} #会抛出如下异常
print(dict)
输出结果:
TypeError: unhashable type: 'list'
-
列表的拷贝
直接赋值:其实就是对象的引用(别名)
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象
深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象
网友评论