列表中可以放任意元素
list1 = ["abc", "张三", 18, True, {"name":"李四", "age":20}, ["A", "B", "C"]]
# 列表是有序的 可以使用索引的方法获取数据
print(list1[3], type(list1[3])) # True <class 'bool'>
print(list1[4], type(list1[4])) # {'name': '李四', 'age': 20} <class 'dict'>
列表的增删改查
增
append 追加数据
list2 = [1,2,3]
# append 追加,增加在列表的最后边
list2.append(4)
print(list2.append(5)) # 输出结果:None 无效指令 输出内容为空 append是一个指令,不能打印,只能追加完成后,再打印
print(list2) # [1, 2, 3, 4]
# 举例:
name = ["张三", "李四", "王五"]
while True:
input_name = input("请输入要添加的学生姓名(按Q或q退出程序!):")
if input_name.upper() == "Q":
break
name.append(input_name)
print(name)
insert 插入数据
# insert 在什么位置插入什么数据
name.insert(1, "insert数据") # 插入到1索引位置
print(name) # ['张三', 'insert数据', '李四', '王五']
extend 遍历追加
list3 = ["A", "B", "C"]
list3.extend("D")
print(list3) # ['A', 'B', 'C', 'D']
list3.extend(["a", "b", 1, 2])
print(list3) # ['A', 'B', 'C', 'D', 'a', 'b', 1, 2]
list3.extend(['aa', ["bb", "cc"], 11, 22]) # 只遍历第一层列表
print(list3) # ['A', 'B', 'C', 'D', 'a', 'b', 1, 2, 'aa', ['bb', 'cc'], 11, 22]
删除
pop 删除索引位置删除数据
list4 = ['A', 'B', 'C', 1, 2, 'D']
list4.pop(-2)
print(list4) # ['A', 'B', 'C', 1, 'D']
pop_value = list4.pop(-2) # 有返回值
print(pop_value) # 1
print(list4) # ['A', 'B', 'C', 'D']
# 不指定索引值,默认删除最后一个数据
list4.pop()
print(list4) # ['A', 'B', 'C']
# 索引越界 直接报错
list4.pop(4) # IndexError: pop index out of range
# 列表为空,不能pop 直接报错
list5 = []
list5.pop() # IndexError: pop from empty list
remove 移除指定元素
list6 = ['A', 'B', 'C', 1, 2, "A", "A", 'D']
list6.remove(2) # 删除指定数据
print(list6) # ['A', 'B', 'C', 1, 'D']
list6.remove("C")
print(list6) # ['A', 'B', 1, 'D']
# 列表中存在形同元素, 默认只删除从左数第一个
list6.remove("A")
print(list6) # ['B', 1, 'A', 'A', 'D']
# 删除列表中不存在的数据 直接报错
list6.remove("G")
print(list6) # ValueError: list.remove(x): x not in list
clear 清空列表
list7 = ['A', 'B', 'C', 1, 2, "A", "A", 'D']
list7.clear()
print(list7) # []
del 按照索引删除
list8 = ['A', 'B', 'C', 1, 2, "A", "A", 'D']
del list8[3]
print(list8) # ['A', 'B', 'C', 2, 'A', 'A', 'D']
# 按照切片(步长)进行删除
del list8[::2]
print(list8) # ['B', 2, 'A']
update
# update
list9 = ['A', 'B', 'C', 'D']
# 直接使用索引进行赋值
list9[0] = "a"
print(list9) # ['a', 'B', 'C', 'D']
list9[2:] = "EFGH"
print(list9) # ['a', 'B', 'E', 'F', 'G', 'H']
# 给列表中的多个元素赋值
l = list("0123456789")
l[6:] = "abcdef"
print(l) # ['0', '1', '2', '3', '4', '5', 'a', 'b', 'c', 'd', 'e', 'f']
# 把列表中下标6到末尾的值更新为"A","B"
l[6:] = "AB"
print(l) # ['0', '1', '2', '3', '4', '5', 'A', 'B']
# 把列表中索引2,3的值更新为C
l[2:4] = "C"
print(l) # ['0', '1', 'C', '4', '5', 'A', 'B']
# 在不替换原有元素的情况下加入新元素
l[2:2] = "23"
print(l) # ['0', '1', '2', '3', 'C', '4', '5', 'A', 'B']
# 将两个元素赋值给四个空间,报错
l[2::2] = "AB" # 从下标2取值到末尾,步长为2,需替换4个值,而给到的数据只有两个,所以报错
print(l) # ValueError: attempt to assign sequence of size 2 to extended slice of size 4
# 指定数据超过被替换数据个数,同样报错
l[2::2] = "ABCDE"
print(l) # ValueError: attempt to assign sequence of size 5 to extended slice of size 4
# 将4个值替换4个值 成功
l[2::2] = "ABCD"
print(l) # ['0', '1', 'A', '3', 'B', '4', 'C', 'A', 'D']
查
for i in l:
print(i)
列表嵌套
l1 = [1, 2, "abcd", "lisi", 18, ["name", "age", 20]]
l1[2] = l1[2].upper()
print(l1) # [1, 2, 'ABCD', 'lisi', 18, ['name', 'age', 20]]
# 给列表中嵌套列表追加数据
l1[5].append("sex")
print(l1) # [1, 2, 'ABCD', 'lisi', 18, ['name', 'age', 20, 'sex']]
# 修改列表中嵌套列表元素的值
l1[5][2] = 18
print(l1) # [1, 2, 'ABCD', 'lisi', 18, ['name', 'age', 18, 'sex']]
l1[-1][0] = "user_" + l1[-1][0]
print(l1) # [1, 2, 'ABCD', 'lisi', 18, ['user_name', 'age', 18, 'sex']]