一、列表的常用操作及内置方法
1、用途:按照索引存放多个任意类型的值,索引反映的是位置/顺序
2、定义方式:在[]内用逗号分割开多个任意类型的元素
ps:只要能被for循环的类型都能传成功list转成列表
#数据类型转换
res=list("hello")3['h', 'e', 'l', 'l', 'o'] # res=list({"k1":1,"k2":2,"k3":3})3['k1', 'k2', 'k3'] print(res)
3、常用操作+内置的方法
===============3.1 优先掌握的操作===============
1、按索引存取值(正向存取+反向存取):即可以取可以改值,不能加值
2、切片(顾头不顾尾,步长)
2.1 浅copy:
l1 = [11,22,[66,77]] l2=l1.copy() print(id(l1[0]),id(l1[1]),id(l1[2])) print(id(l2[0]),id(l2[1]),id(l2[2]))#与上一横id相同
2.2 deepcopy:
l1 = [11,22,[66,77]] from copy import deepcopy#深拷贝要引用的模块 l3=deepcopy(l1) print(id(l3[0]),id(l3[1]),id(l3[2])) l1[2][0]=6666 print(l1) print(l3)
# 了解:
res=l1[-1:-4:-1] res=l1[::-1] print(res)#步长与切片方向都要一致
3、长度
l1 = [11,22,[66,77]] print(len(l1))
4、成员运算in和not in
l1 = [111,22,[66,77]] print([66,77] in l1)#[66,77]是个整体 print(66 in l1) print(66 not in l1)
5、追加append
l1=[11,222] l1.append(33) l1.append(44) l1.append([55,66]) print(l1)
6、insert插入
l1 = [111,22,[66,77]] l1.insert(1,"aaa")#在索引1的前面插入'aaa' print(l1)#[11, 'aaa', 22, [66, 77]]
7、删除
l1=[11,222,[1,2]] #6.1 万能删除,没有返回值,代表的是单纯的删除 # del l1[0] # print(l1) #6.2 指定元素删除,没有返回值,代表的是单纯的删除 # res=l1.remove([1,2]) # print(l1) # print(res) #6.3 指定索引删除,有返回值,代表的是取走操作 # res=l1.pop(1) # print(l1) # print(res)
8、循环
l1=[11,222,[1,2]] for x in l1: print(x)
===============3.2 需要掌握的操作===============
1、clear
l1.clear()
2、append extend
extend内置for循环,而append没有
l2=[444,555] for item in l2: l1.append(item) print(l1)#[11, 22, 333, 333, 333, 444, 555] l1.extend(l2) print(l1)#[11, 22, 333, 333, 333, 444, 555, 444, 555] l1.extend("hello")#[11, 22, 333, 333, 333, 444, 555, 444, 555, 'h', 'e', 'l', 'l', 'o'] print(l1)
3、count
l1=[11,22,333,333,333,] print(l1.count(333333333))#0计数为0 print(l1.count(22)) #1计数为1
4、index
l1=[11,22,333,333,333,] # res=l1.index(333,0,2)#查找不到报错 # res=l1.index(444)#查找不到报错 print(res)
5、reverse 顺序反转:相当于切片再赋值
l1=[11,22,"aaa",'bbb'] l1.reverse() # l1=l1[::-1]#也可以反转 print(l1)#['bbb', 'aaa', 22, 11]
6、sort 排序,默认从小到大排,除非定义
l1 = [11, 22, "aaa", 'bbb'] l1 = [-3,99,12,-5,93] l1.sort(reverse=True) print(l1)
列表总结:
存多个值,有序,可变类型
二、元组的常用操作及内置方法
1、元组就是一个不可变的列表
2、用途: 按照索引存放多个任意类型的值,索引反应的是位置/顺序
3、定义方式:在()内用逗号分隔开多个任意类下的值/元素
# 强调:当元组内只有一个元素时,必须加逗号
# 类型转换
tuple(所有可以被for循环遍历的类型)
#空元组 t=()
4、常用操作+内置的方法
=============优先掌握的操作=============
1、按索引取值(正向取+反向取):只能取
2、切片(顾头不顾尾,步长)
3、长度
4、成员运算in和not in
5、循环
============需要掌握的操作==============
1、index
2、count
元组总结:
存多个值,有序,不可变
三、字典的常用操作及内置方法
1、用途:按key:value的形式存放多个任意类型的value,key反映的是value的属性
2、定义方式:在{}内用逗号分隔开多个key:value,其中value可以是任意类型,而key必须是不可变的类型,通常是字符串类型
# 若 key重复,只保留一个
# 空字典 d={}
#字典默认暴露给外界的可操作的只有字典的key
# 类型转换
转换方式一:
#列表转换为字典 l=[("name","egon"),("age",18),["gender","male"]] res=dict(l) print(res)#{'name': 'egon', 'age': 18, 'gender': 'male'}
#d1= dict([['username','password'],('egon',123)])
#print(d1) # {'username': 'password', 'egon': 123}
转换方式二:
d=dict(x=1,y=2,z=3) print(d)#{'x': 1, 'y': 2, 'z': 3}
dic1={}.fromkeys(["name",'age',"gender"],None) print(dic1)#{'name': None, 'age': None, 'gender': None} dic2={}.fromkeys("hello",None) print(dic2)#{'h': None, 'e': None, 'l': None, 'o': None}
3、常用操作+内置的方法
============优先掌握的操作============
1、按key存取值:可存可取
d={'k1':111}#取 print(d['k1'])#111 d['k2']=222#存 print(d)#{'k1': 111, 'k2': 222}
2、长度len
d={'k1':111,'k2':222} print(len(d))#2
3、成员运算in和not in ====》说的是key
d={'k1':111,'k2':222} print('k1' in d)#True print(111 in d)#False
4、推荐使用的取值方法
d = {'username': 'jason', 'password': 123} print(d['username']) # 不推荐使用该方法 用 get方法: res = d.get('username') print(res) # jason res = d.get('xxx') print(res) # None 键不存在会返回None 不会报错 res = d.get('username', '你搞什么飞机 这个键不存在 去你妹啊') print(res) # 键存在还是返回对应的值 res = d.get('xxx', '你搞什么飞机 这个键不存在 去你妹啊') print(res) # 键不存在 返回get方法里面第二个参数
5、字典新增键值对
方式1 d['hobby'] = 'study' # 字典的key不存在新增 print(d) d['username'] = 'egon' print(d) # 字典的key存在则修改 方式2 d.update(username='jason') print(d) # 特点同上,key不存在新增,key存在则修改 方式3 #键如果存在的情况下 那么不做修改 而是将对应的value取出 #键如果不存在的情况下 那么就是新增 d.setdefault('xxx',123) print(d) # 键不存在是新增 res = d.setdefault('username',123) print(d) # {'username': 'jason', 'password': 123} print(res) # jason #键存在不做修改,而是将对应的value取出
6、快速构造字典******此处有道笔试题
#快速构造出一个字典 res = {}.fromkeys(['k1','k2','k3'],[]) print(res) # {'k1': [], 'k2': [], 'k3': []} res.get('k1').append(123) print(res) # {'k1': [123], 'k2': [123], 'k3': [123]}
7、删除
d={'k1':111,'k2':222} #7.1 万能删除,没有返回值,代表的是单纯的删除 # del d['k1'] # print(d) #7.2 随机删,有返回值,返回一个元组 # res=d.popitem() # 将弹出的键值对组织成元组的形式返回出去 # print(d,res) #7.3 指定key删除,有返回值,代表的是取走操作 # res=d.pop('k1') # 将括号内指定的key对应的value弹出 # print(d,res)
8、键keys(),值values(),键值对items()
# 字典方法三剑客 # print(d.keys()) # 获取字典所有的key # print(d.values()) # 获取字典所有的value # print(d.items()) # 获取字典所有的key和value组织成小元组 """ 可以直接只看里面的数据结构 dict_keys(['username', 'password']) dict_values(['jason', 123]) dict_items([('username', 'jason'), ('password', 123)]) """ for key in d.keys(): print(key) for value in d.values(): print(value) for item in d.items(): print(item) for k, v in d.items(): print(k,v)
9、循环
d={'k1':111,'k2':222} for k in d: print(k) for v in d.values(): print(v) for k,v in d.items(): print(k,v) keys=[] for k in d: keys.append(k) print(keys)#['k1', 'k2'] print(d)#{'k1': 111, 'k2': 222}
10、将字典的key用列表打印出来
d={'k1':111,'k2':222} keys=list(d.keys()) print(keys)#['k1', 'k2']
11、clear()
d = {'username': 'jason', 'password': 123} d.clear() # {}
该类型总结:
存多个值,无序,可变类型