上次作業(yè)

 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)將列表中的數(shù)字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’變成數(shù)字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中的元素,移除每個(gè)元素的空格,
33 # 并找出以’A’或者’a’開頭,并以’c’結(jié)尾的所有元素,
34 # 并添加到一個(gè)新列表中,最后循環(huán)打印這個(gè)新列表。
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. 開發(fā)敏感詞語過濾程序,提示用戶輸入評(píng)論內(nèi)容,如果用戶輸入的內(nèi)容中包含特殊的字符:
54 # 敏感詞列表 li = ["蒼老師","東京熱","武藤蘭","波多野結(jié)衣"]
55 # 則將用戶輸入的內(nèi)容中的敏感詞匯替換成***,并添加到一個(gè)列表中;
56 # 如果用戶輸入的內(nèi)容沒有敏感詞匯,則直接添加到上述的列表中。
57 li = ["蒼老師","東京熱","武藤蘭","波多野結(jié)衣"]
58 new_li = []
59 info = input("評(píng)論")  
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. 數(shù)據(jù)類型劃分

不可變數(shù)據(jù)類型:元祖, bool, int, str  hasnable 可哈希

可變數(shù)據(jù)類型:list, dict, set  unhashable 不可哈希

dict key: 必須是不可變數(shù)據(jù)類型,可哈希

  value: 任意數(shù)據(jù)類型

2. dict 字典

優(yōu)點(diǎn):二分查找去查詢

存儲(chǔ)大量的關(guān)系型數(shù)據(jù)

 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

沒有鍵值對(duì),添加;

有鍵,則值覆蓋。

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

沒有鍵值對(duì),添加;

有鍵,不做任何改變。

1 dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
2 dic1['high'] = 180  #沒有鍵值對(duì),添加
3 dic1['age'] = 16  #如果有鍵,則值覆蓋
4 print(dic1)    #{'age': 16, 'name': 'jin', 'sex': 'male','high':180}
5 
6 dic1.setdefault('weight',150)  # 有鍵值對(duì),不做任何改變,沒有才添加。
7 dic1.setdefault('name','二哥')
8 print(dic1)    #{'age': 16, 'name': 'jin', 'sex': 'male','high':180,'weight':150}

2. 刪

1. pop(a,b) 按鍵去刪,有返回值

a----鍵 b----返回值

按鍵去刪,存在鍵時(shí)返回鍵所對(duì)應(yīng)的值;

沒有此鍵時(shí)返回設(shè)置的返回值。

ps: pop(a) 當(dāng)鍵a不存在且未設(shè)置返回值時(shí),會(huì)報(bào)錯(cuò)

1 dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}    #最后的逗號(hào)無所謂
2 print(dic1.pop('age'))   #18
3 print(dic1.pop('二哥','a'))   #a
4 print(dic1)    #{'name': 'jin', 'sex': 'male'}

2. popitem() 返回并刪除字典中的最后一對(duì)鍵值

返回一個(gè)鍵值對(duì)(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 默認(rèn)刪除字典,也可以按鍵去刪

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)    #此時(shí)字典不存在,會(huì)報(bào)錯(cuò)

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中的內(nèi)容按照dic1:有相同鍵的則值覆蓋,沒有相同鍵的添加到末尾;

dic1中的內(nèi)容保持不變。

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() 鍵值對(duì)的元祖形式

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

 補(bǔ)充:用一行代碼交換元素的值

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)  #會(huì)報(bào)錯(cuò)

2. 字典通用方法

for k,v in dict.items():

  print(k,v)

分別依次打印鍵值對(duì)。

3. get(a,b)

a----鍵

b----返回值

當(dāng)字典中有鍵a時(shí),返回鍵所對(duì)應(yīng)的值;

沒有時(shí),返回b,默認(rèn)為None

1 dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
2 v1 = dic1['name']    #查找鍵所所對(duì)應(yīng)的值
3 print(v1)    #jin
4 print(dic1.get('name','沒有這個(gè)鍵'))    #jin
5 print(dic1.get('name1','沒有這個(gè)鍵'))    #沒有這個(gè)鍵

 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的列表內(nèi)添加元素 
14 print(dic['name'])# ['name']代表的是后面的列表,然后進(jìn)行添加
15 dic['name'].append('ritian')
16 
17 # 3.將name列表內(nèi)的wusir全部大寫
18 dic['name'][1] = dic['name'][1].upper()
19 print(dic)    #必須賦值改變,直接l[2].upper()是無效的
20 
21 # 4.在小列表'py9'內(nèi)添加一個(gè)元素
22 dic['py9']['female'] = 6
23 print(dic)

上次思考題

輸入一段含有字母和數(shù)字的內(nèi)容如:fdgafg215gfd56

要求連在一起的數(shù)字算一個(gè),計(jì)數(shù)