list列表
list:一个有序的集合
创建列表
语法格式: 列表名 = [元素1, 元素2, 元素3…….,元素n]
注:列表中的元素⽤逗号隔开。
注:列表⾥⾯的元素可以是不同类型的数据。
列表元素访问
1、取值:语法格式: 列表名[下标]
• 注:数组取值时,下标不能越界 •
2、替换元素:语法格式: 列表名[下标] = 新值
list5 = [1, 2, 3, 4]
# 1取值:格式 列表名称[下标] 下标从0开始
# 下标不可越界 最后一个元素下标为 列表长度-1 len(list)-1
print(list5[2])
# print(list5[6]) #IndexError: list index out of range
# 2取值:从右向左取
# 下标为-1 获取最后一个元素 同样不能越界
print(list5[-1])
# 3替换元素
# 格式:列表名称[下标]=新值
list5[1] = 200
print(list5)
列表的操作
# 1 列表组合 +
list6 = [1, 2, 3]
list7 = [1, 2, 4, 5]
print(list6 + list7)
# 2列表的重复
list8 = [1]
print(list8 * 10)
# 3判断某个元素是否存在列表
# in not in
print(5 in list7)
# 4列表的截取
# 语法:列表名称[[起始下标]:[结束下标]:[递增基数]]
list9 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 4.1 从0开始截取,截取到数字6
print(list9[:7]) # 从0开始截取,截取到数字6
print(list9[3:]) # 从3截取到末尾
print(list9[:]) # 截取所有
print(list9[3:7]) # 范围
print(list9[::-1]) # 倒序
print(list9[::2]) # 隔一个截取一个
列表的增删改查
list.append(obj) 在列表后添加一个新元素,obj可以是任意类型数据
list.extend(item) 在列表后添加新的元素,将item中的元素分开添加,item 必须是集合类型的元素
list.insert(index,obj) 在列表指定位置添加元素 注:index 下标越界,则在最后位置添加元素
list.pop([index]) 删除指定下标的元素 若不指定下标,则默认删除最后一个元素
list.clear() 清空列表中的元素
list.remove(item) 删除item在列表中匹配到的第一个元素
list.index(obj,[start,end]) obj是否在列表中存在,若存在则返回第一次匹配到的小标,如果不存在则返回错误valueError 。 [start,end]为范围查找
obj in list 或 obj not in list 列表中是否存在某元素
len(list) 返回list的长度
max(list) 返回最大值
min(list) 返回最小值
list.count(obj) 返回obj在list中出现的次数
list.sort([reverse]) 排序 reverse 默认 false 正序 true 反序
list[ : :-1] , list.reverse() 列表翻转(两种方式)
# 四 数据的操作 ---增删改查
# 1 增-- 增加数据
list10 = [1, 2, 3, 4]
print(list10)
# 1.1 list.append(obj)在列表后面添加一个新的元素,obj可以是任意类型数据
list10.append("asfd")
print(list10)
# 1.2 list.extend(iter) 在列表后面添加新的元素,将iter中的元素分开添加
# 注;iter 必须 是集合类型的元素
print('------------------------------')
list11 = [1, 2, 3]
print(list11)
list11.extend("abcd")
print(list11)
list11.extend([11, 112])
print(list11)
# 1.3 list.insert(index,obj) 在指定的index位置上添加新的obj元素
# 不会覆盖该位置原来的元素,原数据在index上的及之后的袁术下标依次向后顺移
list12 = [1, 2, 3, 4]
list12.insert(2, 44)
print(list12)
list12.insert(6, 2344)
# 如果新增数据的下标越界,会在列表后添加新的元素
print(list12)
# 2 改 ---更改数据 更新数据
# 语法格式:列表名称【index】=新值
list5[1] = 200
print(list5)
# 3 删--- 删除数据
# 3.1 list.pop([index]) 移除指定index位置的元素
# 当不指定index的值时,默认删除最后一个值
list13 = [1, 2, 3, 4]
list13.pop()
print(list13)
list13.pop(2)
print(list13)
# 3.2 list.clear() 清空列表中的元素
list14 = [1, 2, 3, 4, 5]
list14.clear()
print(list14)
# 3.3 list.remove(item) 移除列表中匹配到第一个的item的元素
list15 = [1, 2, 2, 3, 3, 4, 4, 3, 5, 56]
list15.remove(1)
print(list15)
list15.remove(3)
print(list15)
# 查--- 查询元素
# 1.列表中是否存在某个元素 in not in
# 2.列表中是否存在一个元素 index
# list.index(obj,[start,end]) 如果存在,返回第一次匹配到的下标,
# 如果不存在,返回错误valueError
list15 = [1, 2, 2, 3, 3, 4, 4, 3, 5, 56]
print(list15.index(1))
print(list15.index(2))
print(list15.index(4, 6, 8))
# 五、列表其他操作
list15 = [121, 23, 34, 35, 54, 4]
# 1.获取列表长度
print(len(list15))
# 2.返回列表中最大的元素
print(max(list15))
# 3.返回列表中最小的元素
print(min(list15))
# 4.列表翻转 改变原来的列表
list1 = [1, 2, 3, 4]
list1.reverse()
print(list1)
print(list1[::-1]) # 返回一个新的列表,不会改变原来的列表
# 5 list1.count(obj) 返回元素obj在列表中的个数
list1 = [12, 2, 33, 4, 4, 6, 5, 4, 44]
print(list1.count(4))
# 6.list.sort() 列表排序,默认正序
# reverse 默认false 正序; 如果为true ,倒序
list1 = [12, 2, 33, 4, 4, 6, 5, 4, 44]
list1.sort(reverse=True)
print(list1)
# 7 拷贝
# 浅拷贝:表面上增加了一个变量名称,但内存地址使用被拷贝的地址
print('------------')
list100 = [1, 2, 2, 12]
listCopy = list100
print(list100)
print(listCopy)
print(id(list100))
print(id(listCopy))
list100[0] = 100
print(list100)
print(listCopy)
# 深拷贝 返回一个新的列表,内存地址与原来的列表不一样
list200 = [1, 2, 2, 12, 444]
listNew = list200.copy()
print(id(list200))
print(id(listCopy))
# 拷贝模块
import copy
a = [1, 1, 33, [1, 2, 5]]
b = copy.copy(a)
c = copy.deepcopy(a) # 真正的深拷贝
print(id(a))
print(id(b))
print(id(c))
print('**********************')
print(id(a[3]))
print(id(b[3]))
print(id(c[3]))