Day10 集合 字元編碼

2022-09-09 02:27:08 字數 3177 閱讀 4160

集合、list、tuple、dict一樣都可以存放多個值,但是集合主要用於:去重、關係運算

去重: 1.只能針對不可變型別去重

2.無法保證原來的順序

定義:在{}內用逗號分隔開多個元素,集合具備以下三個特點:

1:每個元素必須是不可變型別

2:集合內沒有重複的元素

3:集合內元素無序

型別轉換:但凡能被for迴圈的遍歷的資料型別(強調:遍歷出的每乙個值都必須為不可變型別)都可以傳給set()轉換成集合型別

friends1 =

friends2 =

① 取交集:兩者共同的好友

res=friends1 & friends2

print(res)

print(friends1.intersection(friends2))

② 取並集/合集:兩者所有的好友

print(friends1 | friends2)

print(friends1.union(friends2))

③ 取差集:取friends1獨有的好友

print(friends1 - friends2)

print(friends1.difference(friends2))

取friends2獨有的好友

print(friends2 - friends1)

print(friends2.difference(friends1))

④ 對稱差集: 求兩個使用者獨有的好友們(即去掉共有的好友)

print(friends1 ^ friends2)

print(friends1.symmetric_difference(friends2))

⑤父子集:包含的關係

s1=s2=

print(s1 > s2) # 當s1大於或等於s2時,才能說是s1是s2他爹

print(s1.issuperset(s2))

print(s2.issubset(s1)) # s2 < s2 =>true

s1=s2=

print(s1 == s2) # s1與s2互為父子

print(s1.issuperset(s2))

print(s2.issuperset(s1))

1.長度

>>> s=

>>> len(s)

2.成員運算

>>> 'c' in s

true

3.迴圈

>>> for item in s:

... print(item)

...c

a1:discard

# s.discard(4) # 刪除元素不存在do nothing

# print(s)

# s.remove(4) # 刪除元素不存在則報錯

2:update

# s.update()

# print(s)

3:pop

# res=s.pop()

# print(res)

4:add

# s.add(4)

# print(s)

5.了解

res=s.isdisjoint() # 兩個集合完全獨立、沒有共同部分,返回true

print(res)

# s.difference_update() # s=s.difference()

# print(s)

人類在與計算機互動時,用的都是都是人能讀懂的字元,而計算機只能識別二進位制。因此,由人類的字元到計算機中的數字,必須經歷字元——》翻譯——》數字這一過程,翻譯的過程必須參照乙個特定的標準,該標準稱之為字元編碼表,該錶上存放的就是字元與數字一一對應的關係。編碼指的是翻譯或者轉換的意思,即將人能理解的字元翻譯成計算機能識別的數字。

ascii表:

①只支援英文本串

②採用8位二進位制數對應乙個英文本串

gbk表:

①支援英文本元、中文字元

②採用8位(8bit=1bytes)二進位制數對應乙個英文本串

採用16位(16bit=2bytes)二進位制數對應乙個中文字串

unicode(記憶體中統一使用unicode):

①相容萬國字元

與萬國字元都有對應關係

②採用16位(16bit=2bytes)二進位制數對應乙個中文字串

個別生僻會採用4bytes、8bytes

unicode表在記憶體中使用,而很多老的硬碟和軟體都是使用老的編碼表,軟體都是存在於硬碟中,執行時需載入到記憶體,unicode的存在可以讓計算機執行這些軟體而不產生亂碼。因此unicode可以和老的字元編碼相互轉換,但是老的字元編碼表不能通過unicode互轉。

utf-8:將記憶體中的unicode二進位制寫入硬碟或者基於網路傳輸時必須將其轉換成一種精簡的格式,這種格式即utf-8

英文->1bytes

漢字->3bytes

結論:1、記憶體固定使用unicode,我們可以改變的是存入硬碟採用格式

英文+漢字-》unicode-》gbk

英文+日文-》unicode-》shift-jis

萬國字元》-unicode-》utf-8

2、文字檔案訪問亂碼問題

存亂了:解決方法是,編碼格式應該設定成支援檔案內字串的格式

取亂了:解決方法是,檔案是以什麼編碼格式存如硬碟的,就應該以什麼編碼格式讀入記憶體

3 字元編碼表的應用

python3中預設編碼是方式是utf-8,python2是ascii,因此我們可以在檔案首行寫入(# coding: 當初檔案寫入硬碟時採用的編碼格式)來修改直譯器預設的編碼。

在python3中,字串類的值都是使用unicode格式來儲存,而python2早於unicode,因此因此在python2中是按照檔案頭指定的編碼來儲存字串型別的值的(如果檔案頭中沒有指定編碼,那麼直譯器會按照它自己預設的編碼方式來儲存),所以,這就有可能導致亂碼問題。因此我們可以在就是在字串型別前加u,則會將字串型別強制儲存unicode,解決亂碼問題。

4 字串encode編碼與decode解碼的使用

encode:由字元轉換成記憶體中的unicode,以及由unicode轉換成其他編碼的過程,都稱為編碼encode

res=x.encode('utf-8')

decode:由記憶體中的unicode轉換成字元,以及由其他編碼轉換成unicode的過程,都稱為解碼decode

res.decode('utf-8')

day10 字元編碼

這節理論比較多,要好好理解,如果理解不了,一定要把結論記下來 所以基本沒寫別的內容 ascii表 1 只支援英文本串 2 採用8位二進位制數對應乙個英文本串 gbk表 1 支援英文本元 中文字元 2 採用8位 8bit 1bytes 二進位制數對應乙個英文本串 採用16位 16bit 2bytes ...

09 集合及其操作, 字元編碼

二 字元編碼 ss set hello print ss res join ss print res lohess set 對於下面s1和s2兩個集合做一些操作s1 s2 2.1 求交集 res s1 s2 print res 2.2 求並集 res s1 s2 print res 2.3 求差集 ...

day4 集合操作

集合可以去掉重複的,s set 這種形式是集合,集合是無序的,可以把所有的可迭代物件轉為集合 xn ggy agr hello python ggy ssj zy s xn set xn s python set python print s xn.union s python 取並集方法一 pri...