01 列表的切片
lst = ['a', 'b', 1, 2, ['c1', 1]]
# 01 列表的切片
lst1 = lst[0:2] # 从0开始切到1(顾头不顾尾), 切得长度超过1时, 切出来为list类型
print(lst1, type(lst1))
lst2 = lst[0] # 从中切某个元素时, 切出来的类型即元素本身, 以下同理
print(lst2, type(lst2))
lst3 = lst[2]
print(lst3, type(lst3))
lst4 = lst[4]
print(lst4, type(lst4))
lst5 = lst[-1:-3:-1] # 第三个参数为-1时, 表示从右往左切, 也是顾头不照尾
print(lst5, type(lst5))
lst6 = lst[::-1] # 列表反切
print(lst6, type(lst6))
02 往列表中添加元素
list = ['a', 'b', 1, 2, ['c1', 1]]
list.append({'工号': '001'}) # append()一次只能添加一个元素, 并且在列表最后
print(list)
print(list.append('test')) # None
lst7 = list.append('test') # 注意append方法直接对列表进行修改, 返回None值, 不需要重新赋值list_a
print(lst7, type(lst7)) # None
lst8 = list.insert(0, '首字') # insert同理
print(list)
print(lst8) # None
lst9 = list.extend('briwen') # 逐个字母添加元素
print(list)
print(lst9) # None
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)
print(a)
03 列表中删除元素
list = ['a', 'b', 1, 2, ['c1', 1]]
lst10 = list.remove('a') # 有多个重复的元素时, 只删除第一个
print(list)
print(lst10) # None
list = ['a', 'b', 1, 2, ['c1', 1]]
lst11 = list.pop() # pop()不带参数时, 默认删除最后一个元素
print(list)
print(lst11) # 返回被删除的元素
list = ['a', 'b', 1, 2, ['c1', 1]]
lst12 = list.pop(-1) # pop()带参数时, 删除指定索引的元素
print(list)
print(lst12) # 返回被删除的元素
list = ['a', 'b', 1, 2, ['c1', 1]]
del list[-1] # 删除指定索引的元素
print(list)
04 列表的拷贝
# 列表的浅拷贝, b和a共享同一块内存空间, 所以无论是a或b列表进行了修改, print的结果都会同步改变
a = [1, 2, 3, 4, 5]
b = a
a.append('新增元素a')
b.append('新增元素b')
print(a)
print(b)
# 列表的深拷贝,新列表b会开启新的内存空间,a和b的内存相互独立,print的结果互不影响
a = [1, 2, 3, 4, 5]
b = a[:]
a.append('新增元素aa')
b.append('新增元素bb')
print(a)
print(b)
# 列表的copy拷贝: 深拷贝
a = [1, 2, 3, 4, 5]
b = a.copy()
a.append('新增元素aa')
b.append('新增元素bb')
print(a)
print(b)
# # 列表的deepcopy拷贝, 3.10版本没有deepcopy方法, copy默认是深拷贝(见上)
# a = [1, 2, 3, 4, 5]
# b = a.deepcopy()
# a.append('新增元素aa')
# b.append('新增元素bb')
# print(a)
# print(b)
05 列表的排序
# 05 列表的排列
list = [1, 6, 3, 4, 5]
list.sort() # 默认升序排列
print(list)
list.sort(reverse=False)
print(list) # 升序排列, 等同于默认情况
list.sort(reverse=True)
print(list) # 降序排列
list.reverse()
print(list) # 翻转列表
06列表的其他操作
lst = ['a', 'b', 1, 2, ['c1', 1], 1, 1, 1]
a = lst.index('a')
print(a) # 返回元素的索引
b = lst.index('ccc')
print(b) # 程序报错, 元素不在列表中
cnt = lst.count(1)
print(cnt) # 返回元素个数
cnt = lst.count(100)
print(cnt) # 元素不存在时, 返回0
lst.clear()
print(lst, type(lst.clear())) # 返回空列表, NoneType类型
07 列表的推导式写法
lst = [['a', '1'], ['b', '2'], ['c', '3'], ['d', '4'], ['e', '5']]
str_list = [i[0] for i in lst]
print(str_list) # 生成新的列表
str_dict = {i[0]: i[1] for i in lst}
print(str_dict) # 生成新的字典
str_set = {(i[0], i[1]) for i in lst}
print(str_set) # 生成新的集合
str_tuple = ((i[0], i[1]) for i in lst)
print(str_tuple) # 生成新的元组