python 列表
1.列表的切片1
lst = ["大伟","大众","张宇","沈阳","天津","上海","思雨"] # (1)[开始索引:] 从开始索引截取到列表的最后 res =lst[2:] print(res) # (2)[:结束索引] 从开头截取到结束索引之前(结束索引-1) res =lst[:3] print(res) # (3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1) res = lst[3:5] print(res) # (4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取列表元素值 # 正向截取 res = lst[::5] print(res) # 0 5 10 # 逆向截取 res = lst[::-3] # -1 -4 -7 print(res) # (5)[:]或[::] 截取所有列表 res = lst[:] res = lst[::] print(res)
2.列表切片2
lst = ["大伟","大众","张宇","沈阳","天津","上海","思雨"] lst[1:4] = "你好" # 改多个值 (如果使用切片进行修改,要求数据必须是Iterable可迭代性数据)
print(lst) 结果: ['大伟', '你', '好', '天津', '上海', '思雨']
lst[::3] = "abc" # 带有步长的切片修改,切出几个元素就修改几个元素,数量要一致.
lst[::3] = "ab" # error
print(lst) 结果: ['a', '大众', '张宇', 'b', '天津', '上海', 'c']
3.列表的删除
# (6)列表的删除 ( 可切片 ) lst = ["孟凡伟","康与众","张宇","赵沈阳","需保障","梁新宇","沈思雨"] # 1.一次删一个 # del lst[2] # print(lst) # 2.一次删一堆 # del lst[1:-1] # print(lst) # 3.注意点 res = lst[1:-1] del res # 删除的是res这个变量 和 列表无关 print(lst)
4.注意点:
# 额外的注意点 tup = (1,2,3,4,[10,11,12]) # 元组里面的列表可以拿出来修改列表中的元素 print(tup[-1]) tup[-1][-1] = 13 print(tup)
5.列表的常用函数
# 增 # append 向列表的末尾添加新的元素 lst = ["李向阳"] lst.append("陈思雨") print(lst) # insert 在指定索引之前插入元素 lst = ['李小天', '常大伟'] lst.insert(1,"王伟") print(lst)
结果:
['李小天', '王伟', '常大伟'] # extend 迭代追加所有元素 """迭代追加的数据是可迭代性数据(容器类型数据,range对象,迭代器)""" lst = ['小李', '老王'] tup = (1,2,3)lst.extend(tup)
print(lst)
结果:
['小李', '老王', 1, 2, 3]
strvar = "abc" lst.extend(strvar)
print(lst)
lst.extend(range(3)) print(lst) # 删 # 1.pop 通过指定索引删除元素,若没有索引移除最后那个 (推荐) lst = ["曹静怡","王志国","邓鹏","合理"] # 不指定下标,默认删除最后一个 res = lst.pop() print(res) print(lst) # 指定下标,删除具体某个元素 res = lst.pop(1) print(res) print(lst) # 2.remove 通过给予的值来删除,如果多个相同元素,默认删除第一个 lst = ["曹静怡","王志国","合理","邓鹏","合理"] res = lst.remove("合理") print(res) print(lst) # 3.clear 清空列表 lst = ["曹静怡","王志国","合理","邓鹏","合理"] lst.clear() print(lst) # 改查 参考4.py # 列表的其他相关函数 # index 获取某个值在列表中的索引 lst = ["曹静怡","王志国","合理","邓鹏","合理","邓鹏辉","邓鹏蓝","合理","邓鹏绿"] res = lst.index("合理") res = lst.index("合理",3) # 从索引为3的下标开始往后查找 res = lst.index("合理",3,6) # 3 4 5 # 从下标3开始查找到6之前结束查找 # res = lst.index("合理大") error print(res) # count 计算某个元素出现的次数 res = lst.count("合理") # 没有范围的概念 print(res) # sort 对列表排序 lst = [-90,-100,-1,90,78] # 从小到大进行排序 lst.sort() # 从大到小进行排序 lst.sort(reverse=True) print(lst) # 对字符串进行排序(按照ascii编码) lst = ["kobi","james","jordon","yaoming","yi"] lst.sort() print(lst) # 是否可以对中文排序(了解 无规律可循) lst = ["王文","蔡徐坤"] lst.sort() print(lst) # reverse 列表反转操作 lst = [1,2,"a","蔡徐坤","易烊千玺"] lst.reverse() print(lst)
6.列表的深浅拷贝
# ### 列表的深浅拷贝 """ a = 100 b = a a = 200 print(b) => 100 lst1 = [1,2,3] lst2 = lst1 lst1.append(4) print(lst2) => [1, 2, 3, 4] """ # 1.浅拷贝 import copy """模块.方法() 同名模块下的同名方法""" # 方法一 (推荐) """ lst1 = [1,2,3] lst2 = copy.copy(lst1) lst1.append(10) print(lst2) print(lst1) ''' [1, 2, 3] [1, 2, 3, 10] ''' """ # 方法二 """ lst1 = [1,2,3] lst2 = lst1.copy() lst1.append(11) print(lst1) print(lst2) ''' [1, 2, 3, 11] [1, 2, 3] ''' """ # 2.深拷贝 """把所有层级的容器元素都单独拷贝一份,放到独立的空间中""" """ # 现象 lst1 = [1,2,3,[4,5,6]] lst2 = copy.copy(lst1) lst1[-1].append(77) lst1.append(8888) print(lst2) print(lst1) ''' [1, 2, 3, [4, 5, 6, 77]] [1, 2, 3, [4, 5, 6, 77], 8888] ''' """ import copy lst1 = [1,2,3,[4,5,6]] lst2 = copy.deepcopy(lst1) lst1[-1].append(999) print(lst2) print(lst1) ''' [1, 2, 3, [4, 5, 6]] [1, 2, 3, [4, 5, 6, 999]] ''' # 其他容器的深拷贝 lst1 = (1,2,3,{"a":1,"b":[10,20]}) lst2 = copy.deepcopy(lst1) lst1[-1]["b"].append(30) print(lst1) print(lst2) ''' (1, 2, 3, {'a': 1, 'b': [10, 20, 30]}) (1, 2, 3, {'a': 1, 'b': [10, 20]}) ''' """ 总结: 浅拷贝: 只拷贝一级容器中的所有元素独立出一个单独的空间. 深拷贝: 把所有层级的容器中所有元素都单独拷贝一份,形成独立的空间 """ """ tuple 只有count index 两个方法 使用同列表 """