一、上节回顾
list:li = [1,2,3,5,'a']
增加:append:末尾加入==追加
insert:插入,在任意位置,insert(index,'内容')
extend:迭代着加入,'asc' ----> ‘a’,‘s’,‘c’ [1,2,3] ---->1,2,3
删除:pop 按索引删除,有返回值
remove:按元素删除
del:del li[0] del li[1:4] del li
clear:清空
改:li[0] = 'fdfgdg' li[1:3] = 'abcd' li = [1,a,b,c,d,5,'a']
查询:按索引,切片,for while等都可以查出。
方法:count 没有切片
sort:从小到大,正序,sort(reverse = True)倒叙排序
reverse:反转
index:找出元素的索引位置 可以切片
li = [1,2,[3,4,'taibai','a'],3,5,'a']
li[2][2]=li[2][2].captize
2,:元祖。只读,不能更改,儿子不能改,孙子可以改。
可以切片。
3,:range(4,12) = [4,5,。。。。11] 生成指定数字范围的生成器
二、作业收藏:
4,请用代码实现: li = [‘alex’,’eric’,’rain] 利用下划线将列表的每一个元素拼接成字符串"alex_eric_rain" ''' #format 方法一: li = ['alex','eric','rain'] # info = '{}_{}_{}'.format(li[0],li[1],li[2]) # print(info) 方法二: # li = ['alex','eric','rain'] # msg = "" # is_first = True # for item in li: # if is_first: # msg = item # is_first =False # else: # msg += "_" + item # print(msg) 方法三: # li = ['alex','eric','rain'] # sb='' # for i in li[1:]: # sb+='_'+i # print(sb.lstrip('_')) 方法四: join # li = ['alex','eric','rain'] # str(li) # temp = ''.join(li) # print(temp) #将str ---> list split #将list ---> str join # s = 'alex' # temp = '*'.join(s) # 可迭代对象 # print(temp) # li = [1,2] # li = str(li) # print(li[1],type(li[1])) ''' 5,查找列表li中的元素,移除每个元素的空格, 并找出以’A’或者’a’开头,并以’c’结尾的所有元素,并添加到一个新列表中,最后循环打印这个新列表。 li = [‘taibai ’,’alexC’,’AbC ’,’egon’,’ Ritian’,’ Wusir’,’ aqc’] ''' : # li = [' taibai ','alexC','AbC ','egon',' Ritian',' Wusir',' aqc'] # l1 = [] # for i in li: # j = i.strip() # # if j[0].upper() == 'A' and j[-1] == 'c': # if j.startswith('A') and j[-1] == 'c': # l1.append(j) # # for k in l1: # print(k) 将敏感词换成**** # li = ["苍老师","东京热",'武藤兰','波多野结衣'] # new_li = [] # info = input('请输入你的评论') # 苍老师,fdsa东京热 # for i in li: # if info.find(i) != -1: # l = len(i) # info = info.replace(i,'*'*l) #***,fdsa东京热 # new_li.append(info) # print(new_li)""" 7,有如下列表li = [1,3,4’,alex’,[3,7,8,’taibai’],5,’ritian’] 循环打印列表中的每个元素,遇到列表则再循环打印出它里面的元素。 我想要的结果是(用三种方法实现) """ 另外还有两种用for和range的方法 li = [1,3,4,'alex',[3,7,8,'taibai'],5,'ritian'] for i in li:if type(i)==list:for k in i:print(k)else:print(i) #2 li = [1,3,4,'alex',[3,7,8,'taibai'],5,'ritian'] for i in range(0,len(li)):if type(li[i])==list:for k in li[i]:print(k)else:print(li[i]) 方法三: li = [1,3,4,'alex',[3,7,8,'taibai'],5,2] # print('********',li.index([3,7,8,'taibai'])) # new_li = [] # for i in li: # if type(i) == list: # i == [3,7,8,'taibai'] # index_list = li.index(i) # index_list == li.index([3,7,8,'taibai']) == 4 # new_li = li[:index_list] # new_li = [1,3,4,'alex',] # new_li.extend(li[index_list]) # [1,3,4,'alex',].extend([3,7,8,'taibai']) # # new_li = [1,3,4,'alex',3,7,8,'taibai'] # new_li = new_li.extend(li[index_list+1:]) # li[index_list+1:] ==[5,2] #new_li = [1,3,4,'alex',3,7,8,'taibai',5,2] # for j in new_li: # print(j) # li = [1,2,3] # l2 = ['a','b','c'] # l3 = li+l2 # print(l3) 方法四来由: l = [1,2,3,'4'] l[1] = ['2',3,'alex'] print(l) #[1,['2',3,'alex'],3,'4'] [1,'2',3,'alex',3,'4'] l[1:2] = ['2',3,'alex'] print(l) 方法四 li = [1,3,4,'alex',[3,7,8,'taibai'],5,2] for i in li: ####方法一if type(i) == list:index_list = li.index(i) # 4 i = [3,7,8,'taibai']li[index_list:index_list+1] = i # li[4:5] = [3,7,8,'taibai']# li = [1,3,4,'alex',3,7,8,'taibai',5,2]# print(i) # for j in li: # print(j)
三、字典的讲解:
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取
总结:1,字典无序。2,数据关联性强,3键值对。唯一一个映射的数据类型。
字典的键必须是可哈希的(不可变的数据类型:字符串,数字,布尔值,元祖)并且是唯一的不可哈希的(可变的数据类型:列表,字典,set)
增:
dic = {'name':'alex','age':19,'high':'175cm'} #dic ['wight']='65kg' #print(dic) # {'name': 'alex', 'age': 19, 'high': '175cm', 'wight': '65kg'} 第一种增加就是字典键值等于变量/# 如果不存在此键值直接增加 ,如果存在就是修改该键对应的值 #dic['name'] = 'chao' #print(dic) # {'name': 'chao', 'age': 19, 'high': '175cm'} #dic.setdefault('weight','60kg') #print(dic) # {'name': 'alex', 'age': 19, 'high': '175cm', 'weight': '60kg'} dic.setdefault('name',666) print(dic) #{'name': 'alex', 'age': 19, 'high': '175cm'} # 总结:setdefault如果不写 参数会报错,只写k 会创建一对值是None的键值对,如果K存在则不会新增加列表
删:
#a = dic.pop('name') #print(dic,a) # {'age': 19, 'high': '175cm'} alex #a = dic.pop('name','lll') #print(dic,a,dic.pop('name','lll')) #{'age': 19, 'high': '175cm'} alex lll # 根据键值删除某一个元素,并返回删除的值,如果键值不存在那么返回 键值后的参数111 注:如果键值后没有参数并且该键值不存在则会报错 #a = dic.popitem() #print(dic,a) # {'name': 'alex', 'age': 19} ('high', '175cm') # 任意删除字典中的某个键值对,并以元祖的形式返回 #del dic['name'] #print(dic) # {'age': 19, 'high': '175cm'} 删除指定的键值对 dic.clear() print(dic) # {} 清空字典
改:
#dic['name'] = 'chao' #print(dic) # {'name': 'chao', 'age': 19, 'high': '175cm'} 根键值直接修改 li = {'name':'chao',1:2} dic.update(li) print(dic,li) # {'name': 'chao', 'age': 19, 'high': '175cm', 1: 2} {'name': 'chao', 1: 2} # 根据第二个列表更新第一个列表相同的键改变值为第二个。不存在的键值增加
查:
a = dic.get('name22') print(a) # None a = dic.get('name22','啥') print(a) # 啥 用get根据键值 去查找值 如果不存在返回 None 或者设置值 a = dic['name22'] # 直接用键值去查找的时候不存在会报错 # print(dic.keys(),type(dic.keys())) # dict_keys(['name', 'age', 'high']) <class 'dict_keys'> # print(dic.values(),type(dic.values())) # dict_values(['alex', 19, '175cm']) <class 'dict_values'> # print(dic.items(),type(dic.items())) # dict_values(['alex', 19, '175cm']) <class 'dict_values'> # # 将键和值转化为列表 # #for 循环去 查找 # for i in dic: # print(i) # 默认遍历的是字典的键 name age high # for j in dic.keys(): # print(j) # 遍历所有键 # for k in dic.values(): # print(k) # 遍历所有值 # for m,n in dic.items(): # print(m,n) #遍历键和值 用啊 m,n 去接受 # m,n = (2,3) # python 中变量的赋值可以用这种形式 # print(m,n) # 2 3