有德最帥,有德最聰明——集合類型內置方法、字符編碼,第十天

終於明白了抄不是目的。當然不可能是給我抄,今天的標題很好的說明了一切。如果一個人學機器一樣去麻木的非常有規律的完成自己的罰抄,那麼他終將和機器一樣;一個人應該學人,每抄一行,每抄一遍都應該去思考這是爲什麼。

我爲什麼會隨口說出’我吃過了‘,我他


媽真是蠢驢,草泥馬的陳有德大傻逼。

十五歲的時候讓你學游泳,你說難,不學了,等你十八歲的時候,有女孩子約你一起去游泳,你說你不會

第十天

集合類型:

1.用途:關係運算,去重

2.定義方式,使用{}用逗號分隔開多個值,存放的值只能是不可變(可hash)類型

3.強調:

集合內元素都是不可變即可hash類型

集合內的元素無序

集合內的元素不能重複


單純使用集合去重,需要注意的問題:

去重的目標所包含的值必須是不可變類型

去重的結果會打亂原來的順序


常用操作+內置的方法:

優先掌握的操作:

1,長度len():

pythoners={'王大炮','李二丫','陳獨秀','艾裏克斯','wxx','歐德博愛'}
print(len(pythoners))

2.成員運算和in 和 not in:

print('李二丫' in pythoners)

3.並集 | 

pythoners={'王大炮','李二丫','陳獨秀','艾裏克斯','wxx','歐德博愛'}
linuxers={'陳獨秀','wxx','egon','張全蛋'}
print(pythoners | linuxers)
print(pythoners.union(linuxers))

4.交集&

print(pythoners & linuxers)
print(pythoners.intersection(linuxers))
print(linuxers & pythoners)

5.差集-

print(pythoners - linuxers)
print(pythoners.difference(linuxers))
print(linuxers - pythoners)
print(linuxers.difference(pythoners))

6.^對稱差集(交叉補集)

print(pythoners ^ linuxers)
print(pythoners.symmetric_difference(linuxers))

7.==

s1={1,2,3}
s2={1,2,3}
print(s1 == s2)

8.父集(包含關係):>,>=

s1={1,2,3,4,5}
s2={1,2,3}
print(s1 > s2) # s1包含s2

9.子集,被包含的關係:<,<=

需要掌握的內置方法:

1.add()添加一個元素

s1={1,2,3,4,5}
s1.add(6)
print(s1)

2.update()加入一個集合

s1.update({4,7,8,9})
print(s1)

3.pop()隨機刪除一個元素,有返回值

res=s1.pop()
print(res)

4.remove()刪除一個元素,沒有返回值

res=s1.remove(4)
print(res)
print(s1)

5.difference_update,將集合中不同的元素更新到指定的集合中

s1={1,2,3,4,5}
s2={2,3,7,8}
s1=s1 - s2
print(s1)
s1.difference_update(s2) # s1=s1 - s2
print(s1)

6.discard()即便要刪除的元素不存在也不會報錯

s1.discard(7) # 即便要刪除的元素不存在也不會報錯

7.isdisjoint()查詢某個集合的值是否在另一個集合中

s1={1,2,3,4,5}
s2={5,6,7,8}
print(s1.isdisjoint(s2))

集合類型總結:

可以存多個值,但是存的值都是不可變的類型;無序;可變類型

單純的用集合去重時,需要主要的問題,

去重的目標所包含的值必須都爲不可變類型

去重結果會打亂原來的順序


字符編碼:

將人類的字符編碼/轉換成計算機能識別的數字,這種轉換必須遵循一套固定的標準,該標準無非是人類字符與數字之間的對應關係,稱之爲字符編碼表

這個東西我已經完全理解了,所以我把老師講課打出來的文字復

制粘貼出來給你們看,看得懂的看,看不懂的留言:

00
01
10
11


A---->0000 0000
B---->0000 0001
c---->0000 0002
d---->0000 0003

bit:二進制位
Bytes:字節

ASCII碼錶:用1Bytes表示一個英文字符
1英文字符=8bit=1Bytes


GBK:用2Bytes表示一箇中文字符,1Bytes去表示英文字符



unicode:內存中使用的是unicode編碼,unicode把全世界的字符都建立好對應關係
2Bytes去表示一個字符


    0000 0000 0000 0000

    utf-8 #unicode tranform format-8
        utf-8 1Bytes表示英文,用3Bytes表示中文


#字符編碼需要記住的概念
#01 內存中固定使用unicode編碼,我們唯一可以改變的存儲到硬盤時使用的編碼
#02 要想保證存取文件不亂亂碼,應該保證文檔當初是以什麼編碼格式存的,就應該以什麼編碼格式去讀取

#03 python3解釋器默認編碼是UTF-8
    python2解釋器默認編碼是ASCII


    python2中有兩種字符串編碼格式
        1unicode            x=u''
        2unicode編碼後的結果
            x='' #如果文件頭爲coding:utf-8,那麼""被存成utf-8格式的二進制

python3只有一種字符串編碼格式:
        1unicode
            x='’

#04  編碼與解碼
    unicode-------編碼encode-------->gbk
    unicode<-------解碼decode--------gbk

    #***
    #coding:gbk
    x='’
    x.decode('gbk')

    #coding:gbk
    x=u''
    x.encode('gbk')
    x.encode('utf-8')


    #python3中(*****    x=''
    x只能進行編碼
    x.encode('gbk')

總結:python2和python3 :

在python2 中的字符串類型都是str類型,都是unicode按照文件頭指定的編碼,編碼之後的結果

在python2中也可以製造unicode編碼的字符串,需要在字符串前面加上u

python3

在python3中所有的字符串類型都是unicode編碼的

所以python3中的字符串類型可以編碼成其他類型

發佈了43 篇原創文章 · 獲贊 8 · 訪問量 8786
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章