上次作业

 1 # 1. 列表的改
 2 lis = [2,3,'k',['qwe',20,['k',['tt',3,'1']],89],'ab','adv']
 3 # 1)将列表lis中的’tt’变成大写(用两种方式)。
 4 方法一:
 5 lis[3][2][1][0] = "TT"
 6 print(lis)
 7 
 8 方法二:
 9 lis[3][2][1][0] = lis[3][2][1][0].upper()
10 print(lis2)
11 
12 # 2)将列表中的数字3变成字符串’100’(用两种方式)。
13 方法一:
14 lis[1] = '100'
15 lis[3][2][1][1] = '100'
16 print(lis)
17 
18 方法二:
19 lis[3][2][1].remove(3)
20 lis[3][2][1].insert(1,'100')
21 print(lis)
22 
23 # 3)将列表中的字符串’1’变成数字101(用两种方式)
24 方法一:
25 lis[3][2][1][2] = 101
26 print(lis)
27 
28 方法二:
29 lis[3][2][1][2] = int(lis[3][2][1][2].replace('1','101'))
30 print(lis)
31 
32 # 2. 查找列表li中的元素,移除每个元素的空格,
33 # 并找出以’A’或者’a’开头,并以’c’结尾的所有元素,
34 # 并添加到一个新列表中,最后循环打印这个新列表。
35 li = ['taibai','alexC','Abc','egon','Ritian','Wusir','aqc']
36 b = []
37 方法一:
38 for i in li:
39     s = i.strip()
40     if (s.startswith("A")or s.startswith("a"))and s.endswith("c"):
41         b.append(s)
42 for x in b:
43     print(x)
44 
45 方法二:
46 for i in li:
47     s = i.strip()
48     if s[0].upper() == 'A' and s[-1] == 'c':
49         b.append(s)
50 for x in b:
51     print(x)
52 
53 # 3. 开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:
54 # 敏感词列表 li = ["苍老师","东京热","武藤兰","波多野结衣"]
55 # 则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中;
56 # 如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。
57 li = ["苍老师","东京热","武藤兰","波多野结衣"]
58 new_li = []
59 info = input("评论")  
60 for i in li:
61     if i in info:
62         l = len(i)
63         info=info.replace(i,'***',l)
64 new_li.append(info)
65 print(new_li)

 1. 数据类型划分

不可变数据类型:元祖, bool, int, str  hasnable 可哈希

可变数据类型:list, dict, set  unhashable 不可哈希

dict key: 必须是不可变数据类型,可哈希

  value: 任意数据类型

2. dict 字典

优点:二分查找去查询

存储大量的关系型数据

 1 dic = {
 2     'name':['大猛','小孟'],
 3     'py9':[{'num':71,'avg_age':18,},
 4            {'num':73,'avg_age':19, },
 5            {'num':78,'avg_age':16, },
 6             ],
 7     True:1,
 8     (1,2,3):'wuyiyi',
 9     2:'二哥',
10 }
11 print(dic)

 1. 增

1. dic['a'] = 18

没有键值对,添加;

有键,则值覆盖。

2. dic.setdefault('b',180)

没有键值对,添加;

有键,不做任何改变。

1 dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
2 dic1['high'] = 180  #没有键值对,添加
3 dic1['age'] = 16  #如果有键,则值覆盖
4 print(dic1)    #{'age': 16, 'name': 'jin', 'sex': 'male','high':180}
5 
6 dic1.setdefault('weight',150)  # 有键值对,不做任何改变,没有才添加。
7 dic1.setdefault('name','二哥')
8 print(dic1)    #{'age': 16, 'name': 'jin', 'sex': 'male','high':180,'weight':150}

2. 删

1. pop(a,b) 按键去删,有返回值

a----键 b----返回值

按键去删,存在键时返回键所对应的值;

没有此键时返回设置的返回值。

ps: pop(a) 当键a不存在且未设置返回值时,会报错

1 dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}    #最后的逗号无所谓
2 print(dic1.pop('age'))   #18
3 print(dic1.pop('二哥','a'))   #a
4 print(dic1)    #{'name': 'jin', 'sex': 'male'}

2. popitem() 返回并删除字典中的最后一对键值

返回一个键值对(key,value)形式

1 dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
2 a = dic1.popitem()
3 print(a)    #('sex', 'male')
4 print(dic1)    #{'age': 18, 'name': 'jin'}

3. del 默认删除字典,也可以按键去删

1 dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
2 del dic1['name']
3 print(dic1)    #{'age': 18, 'sex': 'male'}
4 del dic1
5 print(dic1)    #此时字典不存在,会报错

4. clear() 清空字典

1 dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
2 dic1.clear()
3 print(dic1)    #{}

3. 改

1. dic('a') = 15 即增里的:有键,则值覆盖

2. dic2.update(dic1) 更新

dic2中的内容按照dic1:有相同键的则值覆盖,没有相同键的添加到末尾;

dic1中的内容保持不变。

1 dic1 = {"name":"jin","age":18,"sex":"male"}
2 dic2 = {"name":"alex","weight":75}
3 dic2.update(dic1)  
4 print(dic1)    #{"name":"jin","age":18,"sex":"male"}
5 print(dic2)    #{"name":"jin","weight":75,"age":18,"sex":"male"}

4. 查

 1. dic.keys() 键

dic.values() 值

dic.items() 键值对的元祖形式

1 dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
2 print(dic1.keys(),type(dic1.keys()))
3 print(dic1.values())
4 print(dic1.items())

 补充:用一行代码交换元素的值

a = 1

b = 2

a,b = b,a

ps:

ps-1 a,b = [1,2]

print(a,b)  #1 2

ps-2 a,b = [1,2],[2,3]

print(a,b)  #[1,2] [2,3]

ps-3 a,b = (1,2)

print(a,b)  #1 2

ps-4 a,b = [1,2,3]

print(a,b)  #会报错

2. 字典通用方法

for k,v in dict.items():

  print(k,v)

分别依次打印键值对。

3. get(a,b)

a----键

b----返回值

当字典中有键a时,返回键所对应的值;

没有时,返回b,默认为None

1 dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
2 v1 = dic1['name']    #查找键所所对应的值
3 print(v1)    #jin
4 print(dic1.get('name','没有这个键'))    #jin
5 print(dic1.get('name1','没有这个键'))    #没有这个键

 3. 字典的嵌套

 1 dic = {
 2     'name':['alex','wusir','taibai'],
 3     'py9':{
 4         'time':'1213',
 5         'learn_money':19800,
 6         'addr':'CBD',
 7            },
 8     'age':21
 9        }
10 # 1.修改age的值
11 dic['age'] = 56
12 
13 # 2.在name的列表内添加元素 
14 print(dic['name'])# ['name']代表的是后面的列表,然后进行添加
15 dic['name'].append('ritian')
16 
17 # 3.将name列表内的wusir全部大写
18 dic['name'][1] = dic['name'][1].upper()
19 print(dic)    #必须赋值改变,直接l[2].upper()是无效的
20 
21 # 4.在小列表'py9'内添加一个元素
22 dic['py9']['female'] = 6
23 print(dic)

上次思考题

输入一段含有字母和数字的内容如:fdgafg215gfd56

要求连在一起的数字算一个,计数