1、列表list 是一组数据组合到一起,有序可变的集合
语法格式: 列表名 = [元素1, 元素2, ... 元素n]
注:不同元素之间用 , 隔开
注:列表中的元素类型可以不同
创建列表:空列表,带有元素的列表,带有不同类型的元素的列表,list中可以包含list类型的元素
list1 = []
list2 = [1, 2, 3, 4]
list3 = [1, 2.3, "abc", None, True]
list4 = [1, 2, [55, 66, 77], 8, 9]
2、访问列表中的元素
取值: 格式:列表名[下标/索引/index] 下标从0开始,下标不能越界, 最后一个元素的下标 len(list) - 1
下标可以写负数 -1:代表最后一个元素 , 负数代表从右向左查
更新数据
语法: 列表名[下标] = 新值
列表的截取
语法格式:列表名[[起始下标start]:[结束下标stop][:][递增基数step]]
start:截取列表的起始位置(包含),可以省略该参数,默认值为0
stop:截取列表的结束位置(不包含),可以省略该参数,默认值为长度
step:步长,间隔数,默认值为1,可以写负数, -1:从右向左截取
反转列表: print(list8[::-1])
截取所有元素 print(list8[:]) print(list8[::])
判断元素是否在列表中 in not in
3、n维列表
二维列表 list中的元素类型还是list类型
list1 = [[1, 2, 3], [11, 22, 33], [111, 222, 333]]
三维列表
list2 = [[[1,2],[3,4]],[[5,6],[7,8]],[[9,0],[11,12]]]
4、获取列表的元素个数 len(list)
5、增删改查
1、增加数据
append : 在列表末尾添加新的元素
list.append(obj) : 将obj作为一个整体添加到list列表中
extend : 在列表末尾添加新的元素
list.extend(iter) : 在列表末尾一次性追加iter里面所有的元素(将iter中的元素拆开添加) 注:iter为集合类型
insert 插入数据
list.insert(index,obj) 在指定的index下标位置新增元素,该下标原来的的数据不会被覆盖,原数据依次向后顺移。 obj:任意类型数据
2、更改数据
list4 = [1, 2, 3, 4]
list4[1] = 200
3、删除数据
pop : 删除数据
pop([index]) : 删除指定index位置的元素,如果不指定index,默认删除最后一个元素
pop有返回值,将删除的数据返回
remove 删除数据
list.remove(obj) 删除匹配到的第一个obj,删除的元素要求在列表中存在,不存在报错
clear:清空列表
list.clear() 清除列表中所有的元素
6、列表的其他方法
获取列表的元素个数 len(list)
返回列表中最大的元素 max(list)
返回列表中最小的元素 min(list)
返回列表中某个元素出现的次数 list.count(obj) 返回list中obj出现的次数
排序 list.sort(reverse) 将列表中的元素排序,默认reverse= Flase升序/正序
当元素为数字类型时,按数字大小排序;当元素为字符串类型时,按ASCII排序。
倒序排列 list.sort(reverse=True)
7、拷贝
浅拷贝 : 同一个内存地址,拥有不同的变量名称
import copy
print("-----------------")
arr7 = [[1,2,3],[6,7,8]]
arr8 = copy.deepcopy(arr7)
print(id(arr7))
print(id(arr8))
print(id(arr7[0]))
print(id(arr8[0]))
深拷贝(仿深拷贝) : 复制数据,将复制的数据放到新的内存地址中
注:列表中的可变数据类型的内存地址一样
arr3 = [1,2,3,4]
arr4 = arr3.copy()
print(arr3) # [1, 2, 3, 4]
print(arr4) # [1, 2, 3, 4]
print(id(arr3)) # 1759068017160
print(id(arr4)) # 1759068017032
arr3[0] = 100
print(arr3) # [100, 2, 3, 4]
print(arr4) # [1, 2, 3, 4]
#
print("**************************")
arr5 = [[1,2,3,4],[6,7,8,9]]
print(arr5) # [[1, 2, 3, 4], [6, 7, 8, 9]]
arr6 = arr5.copy()
print(arr6) # [[1, 2, 3, 4], [6, 7, 8, 9]]
print(id(arr5)) # 1759068017224
print(id(arr6)) # 1759068017288
arr5[0][0] = 100
print(arr5) # [[100, 2, 3, 4], [6, 7, 8, 9]]
print(arr6) # [[100, 2, 3, 4], [6, 7, 8, 9]]
print(id(arr5[0])) # 1759068017096
print(id(arr6[0])) # 1759068017096
真正的深拷贝,:初始数据一致,内存地址不一致
import copy
print("-----------------")
arr7 = [[1,2,3],[6,7,8]]
arr8 = copy.deepcopy(arr7)
print(id(arr7))# 1759068429960
print(id(arr8))# 1759068429896
print(id(arr7[0])) # 1759068115592
print(id(arr8[0])) # 1759068429832