列表操作——增删改查、拷贝、排序
一、增
1)append():默认是在列表的末尾增加元素
语法:列表.append(元素)
arr=[1,2,3]
arr.append(4)
print(arr) # 返回 [1, 2, 3, 4]
arr.append("Python")
print(arr) # 返回 [1, 2, 3, 4, 'Python']
2)insert():指定在某一索引位置,添加元素
语法:列表.insert(指定索引位置,元素)
arr=[1,2,3]
arr.insert(0,4)
print(arr) # 返回 [4, 1, 2, 3]
arr.insert(2,"Java")
print(arr) # 返回 [4, 1, 'Java', 2, 3]
# 当传入的索引位置越界后,并不会报错,而是默认在末尾位置添加
arr.insert(100,"C++")
print(arr) # 返回 [4, 1, 'Java', 2, 3, 'C++']
3)extend():将序列中的所有值,一次性添加在列表的末尾
语法:列表.extend(序列)
a=[1,2,3]
b=("Java","Python")
c={4,5,6}
a.extend(b)
print(a) # 返回[1, 2, 3, 'Java', 'Python']
print(b) # ['Java', 'Python']
a.extend(c)
print(a) # 返回[1, 2, 3, 'Java', 'Python',4,5,6]
print(c) # 返回{4,5,6}
二、删
1)remove():删除列表中,具体某个值的元素
语法:列表.remove(元素)
PS:当删除的目标值元素有多个时,每次执行只能删除一个元素,且删除的是索引位置最小的那个。
a=[3,1,2,"Python",3]
a.remove(3)
print(a) # 返回[1,2,"Python",3]
# 当删除的元素,不在列表中
a.remove(10)
# 报错信息:ValueError: list.remove(x): x not in list
2)del :主要删除指定索引位置的元素。
这个位置可以是一个;也可以是切片(即删除多个位置元素);也可以是整个列表删除(从内存中中去除列表)
语法1:del 列表[某个索引位置]
语法2:del 列表[切片位置]
语法3:del 列表
a=[3,1,2,"Python",3,4,"Java"]
del a[0]
print(a) # 返回 [1,2,"Python",3,4,"Java"]
del a[2:4] # 第2、第3个元素被删除
print(a) # 返回 [1, 2, 4, 'Java']
del a[10] # 超过最大索引会报错越界:list assignment index out of range
del a
print(a) # 列表a已经从内存中移除: name 'a' is not defined
3)pop():传入的索引位置为空时,默认弹出列表的末尾元素,也可以输入指定索引位置,实现弹出该位置的元素。
因此,可以通过pop()或pop(0)实现堆栈的效果(先进先出,先进后出)
语法1:列表.pop() 弹出末尾元素
语法2:列表.pop(索引) 弹出索引位置元素
a=[3,1,2,"Python",3,4,"Java"]
a.pop() #返回 "Java"
print(a) # 返回[3,1,2,"Python",3,4]
a.pop(0) #返回 3
a.pop(0) #返回 1
print(a) # [2, 'Python', 3, 4]
# PS:当列表为空列表时,再去pop元素时,报错IndexError:pop from empty list
三、改
1) 一次更新一个元素值,将指定位置元素的值,更新为目标值
语法: 列表[索引位置] = 目标值
a=[3,1,2,"Python",3,4,"Java"]
a[0] = 100
print(a) # 返回[100,1,2,"Python",3,4,"Java"]
a[200] = 100 #指定索引位置不存在,报错越界 index out of range
2)一次更新多个元素的值,将指定几个位置的值,更新为目标值。
# 写法1:
a=[3,1,2,"Python",3,4,"Java"]
a[0:3] = 100,200,300
print(a) # [100, 200, 300, 'Python', 3, 4, 'Java']
# 写法2:目标元素以序列的形式
a=[3,1,2,"Python",3,4,"Java"]
a[0:3] = [100,200,300]
# a[0:3] = (100,200,300) 这样也可以
print(a) # [100, 200, 300, 'Python', 3, 4, 'Java']
# 当目标元素的个数,与原来不相等时,也是可以的
# 如下,本意是想更新3个元素,但是目标值却包含4个值
a=[3,1,2,"Python",3,4,"Java"]
a[0:3] = 100,200,300,400
print(a) # [100, 200, 300, 'Python', 3, 4, 'Java']
四、查
1)单个查:只能按索引位置查
语法:列表[索引坐标]
a=[3,1,2,"Python",3,4,"Java"]
a[0] # 返回第0个元素3
# a[100] , 索引位置超过时,报越界IndexError: list index out of range
2)多个查:切片查找
语法1:正序切片查
语法2:逆序切片查
语法3:切割切片查
# 正序切
a=[3,1,2,"Python",3,4,"Java"]
a[1:4] # 返回 [1,2,"Python"]
# 逆序切
a[::-1] # 返回 ['Java', 4, 3, 'Python', 2, 1, 3]
# 间隔切
a[::3] # 返回[3, 'Python', 'Java'] 从第0个开始取,间距为3即取第0,3,6,9。。。个元素
3)遍历:for循环
语法1:按元素的值遍历
语法2:按元素的索引坐标遍历
# 按 元素的值遍历
arr=[3,1,2,"Python",3,4,"Java"]
for i in arr:
print(i)
# 按元素的索引坐标遍历
for i in range(len(arr)):
print(arr[i])