疫情环境下的网络学习笔记 python 3.11
3.11
昨日回顾
- 
for循环 - 
在循环取值上比while循环更简单 for x in 可迭代对象: 只要包含多个值,就可以被for循环 
- 
for循环能干的事while都能干,for循环次数取决于迭代对象的值的个数,while循环次数取决于条件 
- 
for i in range() range(start,end,step)py2与py3重range的区别 
- 
break,else,continue 
 
- 
- 
基本数据类型 - int
- float
- str
 
今日内容
- 列表
- 元组
- 字典
正课
列表
作用
按位置存放多个值,取的时候可以用索引
定义
在中括号内用逗号分开多个任意类型的值
L = [1,2,3,4,’qqq’],实际上是用了 list()功能,返回一个列表,赋值给L
类型转换
list() :但凡能够被for 循环遍历的类型都可以当作参数传给 list() 转换成列表:列表,字典,元组,字符串
dic = {
    'qqq':111,
    'www':None,
    'sss':[111,222,333]
}
name = 'deimos'
lis1 = list(dic)
lis2 = list(name)
print(lis1)
print(lis2)
#['qqq', 'www', 'sss']
#['d', 'e', 'i', 'm', 'o', 's']
list 底层相当于调用一个for 循环,遍历每一个元素,存入列表。所以 list9(dic) 取出的列表是字典的 key
字典是无序的,用 list 转换后,key的索引也是无序的,出现位置随。
内置方法
必须掌握的操作:读写
- 
按照索引取值 list[index] L = [111,222,'deimos']- 
正向取 print(L[0])
- 
反向取 print(L[-1])
- 
可以取也可以改 L[0] = 444索引存在则修改列表内索引对应的值,无论是取还是赋值,索引不存在则报错
 
- 
- 
往列表里面追加值 list.append() 在列表最后添加一个值 
- 
往列表中插入值 llist.insert() list.insert(index,item):把一个值放到指定的索引前面,index为int list3 = [11,22,33,44] list3.insert(3,'w') print(list3)
- 
往列表后面添加列表 list.extend() 传入参数:可迭代对象,必须传入一个可以被for循环的类型,将对象的每一个元素添加到列表中去 相当于 for item in 可迭代对象 list.append(item)注意:这些方法都没有返回值,不能在print()中用 点 . 使用,与字符串中 .strip()一类的方法不一样
- 
dle 删除 del List:通用的删除方式,可以删除整个列表,也可以删除元素,没有返回值。 
- 
pop 删除 L.pop() :不传入参数,默认删除最后一个元素 L.pop(index) :传入一个索引,返回了被删除的值 list3 = [11,22,33,44] print(list3.pop(1)) # 22 print(list3) # [11, 33, 44]
- 
**remove 删除 ** L.remove(‘item’):输入指定的元素,删除指定的元素,没有返回值。如果输入的参数在列表中不存在,则报错 按照需求选择删除的方法,想拿到被删除的值,就用pop,指定元素删除,用remove 
- 
切片 L[0:10:1] list[start:end:step]跟字符串一样,要头不要尾不传入参数,只传一个冒号:L[:],默认步长为1,从0开头切到结尾 切片等同于拷贝行为,相当于浅拷贝 list4 = list3[:] print(list3,id(list3)) print(list4,id(list4)) # [11, 22, 33, 44, 55] 2234423690240 # [11, 22, 33, 44, 55] 2234423690432 # 创建一个新列表,切片得到的元素继续指向原列表中的元素取反向步长: list1 = list[::-1] # 反向输出列表
- 
循环 for 
其他操作
- 
list.count(item) 统计个数,看列表中出现这个元素的次数 
- 
list.index(item) 在列表中找一个元素,返回找到的第一个元素位置,没有则报错 
- 
list.clear() 没有参数,清空列表,不返回值 
- 
list.reverse() 将列表倒过来 
- 
list.sort(key = ,reverse = True/False) 针对列表内全为数字,或全为字符串,排序列表,默认从小到大排序(升序),要降序排列,加一个参数rever = True:list.sort(reverse = True) 该方法不返回值 list3 = [11,-22,33,-44,55] list4 = ['aaa','bbb','qqq'] list3.sort(reverse = True) print(list3) print(list4) # [55, 33, 11, -22, -44] # ['aaa', 'bbb', 'qqq']
字符串,列表排序的方法
- 
排序字符串的方法:从左到右对字符串依次比较,第一位与第一位比,按照ascii表上的位置判断结果,如第一位一样则比第二位,以此类推 字母靠后,ASCII码大,Z < a < z 
- 
排序列表的方法:同字符串比较的方法 L1 = [111,22,'a'] L2 = [111,22,'c'] print(L1<L2) # True第一个与第一个比,一样则第二个与第二个比,以此类推。两个列表同样位置的元素必须是同样的类型,否则报错 
补充:队列,堆栈
- 
队列:first in first out 先进先出,类似于扶梯,先上的一定先下 入队:list.append() 出队:list.pop(0) 
- 
堆栈:last in first out 后进先出,类似于上下电梯,后进的先出 入队:list.append() 出队:list.pop() 
元组
作用
可以看作一个不可变的列表,按照索引存值,只用来读,不可改
定义
- 
在小括号()内用逗号分隔开多个任意类型的元素 
- 
tup = (1,44,’a’,[’aa’,’bb’,3]),相当于使用了tuple()方法,赋值给tup 
- 
定义元组时若只有一个元素,必须加逗号 tup1 = (‘aaa’,) 
- 
元组不可变的意思是元组内索引及对应的内存地址不可变,而索引如果指向一个可变类型,则这个可变类型是可以改的 
内存中使用列表,需要支持其读、写操作,使用元组,只需支持其读操作。所以同等数据量的情况下,元组比列表省空间
内置方法
- 索引取值
- 切片
- 长度 len()
- 成员运算
- 循环 for
- 查找索引 index(item)
- 计数 count(item)
字典
定义
在花括号{}内用逗号分隔开多个key:value,其中value可以是任何类型,key必须是不可变类型(元组也可以当key)
实际上底层调用的功能:dict()
- d = {} 默认定义的是空字典,而不是空集合
造字典的方式
- 
直接定义 
- 
dict()+’ key = value’ 方式 d = dict(a = 1, b = 2, c = 3) print(d) # {'a': 1, 'b': 2, 'c': 3}
- 
使用dict函数转换列表的数据类型 现有一可迭代对象,想把它的每个子元素取出来,第一个当作key,第二个当作value 可以使用for来做 info = [ ['name', 'deimos'], ('age', 18), ['sex', 'male'] ] d = {} for key, value in info: d[key] = value print(d) # {'name': 'deimos', 'age': 18, 'sex': 'male'}或着使用dict直接定义 res = dict(info) print(res)dict传入的对象中,每个子容器(列表,元组)必须要有两个元素,第一个用于key,第二个用于value,否则报错 
- 
快速初始化一个字典 将列表中每个元素取出来,作为字典的key,value为none,造一个字典 keys = ['a','b','c'] d = {}.formkeys(keys,None)底层使用for循环,相当于遍历对象每一个值,加上None,赋值给空字典 
内置方法
优先掌握
- 
按key存取值:可存可取 d['key1'] = 222若key存在,则覆盖旧值,若不存在,则创建新值 字典中key值不能重复,若重复,则下面的值会覆盖上面的值 
- 
求长度 len() 
 重复的键值不会被计入个数
- 
成员运算 in 看某个key值是否在这个字典里 
- 
删除 - 
通用删除 del 
- 
dic.pop(key) 根据key来删除,返回被删除key对应的value 
- 
dic.popitem() 随机删除一对键值,返回一个元组,元组中是刚刚删除的(key,value) 
 
- 
- 
dic.keys() 列表得到全部的key 
- 
dic.values() 列表得到全部的value 
- 
dic.items() 拿到一个列表,列表中是一个个元组,元组中(key,value)形式存放键值 python2中这几个方法得到鸡蛋,python3中得到下单的母鸡: - py2:生成一个真的列表
- py3:生成一个可迭代对象,节省内存
 
其他内置方法
- 
dic.clear():清除字典,变成一个空字典 
- 
dic.copy():浅拷贝 
- 
dic.update(new_dic):更新字典,传入参数是一个字典,对老字典中的值,有的则覆盖值,没有的则创建 
- 
dic.get(key):字典取值的方法,若字典中存在key,则返回value;若不存在则不反回值 .get()方法,如果要取的key不存在也不会报错,容错性好 
- 
dic.setdefault(key,value):需求,对一个字典判断其是否存在这个key - 如果存在,就不变,返回原字典中key对应的value
- 如果不存在,则将key,value加入原字典,返回字典中key原来对应的值
 
pass占位符,... 什么都不做,防止报错
总结
- 有序or无序
- 存一个值or存多个值
- 可变or不可变

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号