python集合 字元編碼 bytes與二進位制

2022-08-23 12:30:18 字數 4190 閱讀 4866

集合

用括號表示,可以包含多個元素,用逗號分割

用途

用於關係運算

集合特點

1.每個元素是不可變型別

2.沒有重複的元素

3.無序

應用

1.set去重

set(names)的功能是將列表轉換成集合,並去除重複值

但是因為集合裡面的元素時不可變的,所以set在去重時物件所包含的值不能有不可變型別,例如不能有 [ ]

names=['

zhangsan

','lisi

','wangwu

','zhangsan

','zhaoliu']

s=set(names)

print

(s)e:\pycharmprojects\untitled\venv\scripts\python.exe e:/pycharmprojects/untitled/平時問題積累.py

2.合集功能

pythons=

linuxs=

#1.長度

print

(len(pythons))

#2.成員運算 true false

print('

alex'in

pythons)

#3.並集(2個變數合併,重複元素只取乙個)

print(pythons |linuxs)

#4.交集( 取出同值)

print(pythons &linuxs)

#5.對稱差集(剔除共同值,合併其他值)

print(pythons ^linuxs)

#5.差集(左-右 剔除右邊元素裡面和左相同值 ,最後列印左邊剩餘的)

print(pythons -linuxs)

e:\pycharmprojects\untitled\venv\scripts\python.exe e:/pycharmprojects/untitled/平時問題積累.py

6true

s1=s2=

#6.相等

print(s1 ==s2)

#7.父集(包含關係)

print(s1 >=s2)

#8.父集(被包含關係)

print(s2 <=s1)

e:\pycharmprojects\untitled\venv\scripts\python.exe e:/pycharmprojects/untitled/平時問題積累.py

false

true

true

字元編碼

如何理解字元編碼:將人類的字元編碼/轉換成計算機能識別的數字,這種轉換必須遵循一套固定的標準,

該標準無非是,人類字元與數字的對應關係,稱之為字元編碼表。

a---->0000 0000bit:是二進位制位   byte:位元組

b---->0000 0001c---->0000 0002d---->0000 0003

unicode與utf-8理解

1個英文本母=8bit=1bytes

英文本元:ascii碼表:用1bytes表示乙個英文本元

1英文本元=8bit=1bytes

中文字元:gbk:用2bytes表示乙個中文字元,1bytes去表示英文本元

unicode:記憶體中使用的是unicode編碼,unicode把全世界的字元都建立好對應關係

用2bytes去表示乙個字元

utf-8 #

unicode tranform format-8

utf-8 用1bytes表示英文,用3bytes表示中文

字元編碼需要記住的概念:

01:記憶體中固定使用unicode編碼,我們唯一可以改變的儲存到硬碟時使用的編碼

02: 要想保證訪問檔案不亂亂碼,應該保證文件當初是以什麼編碼格式存的,就應該以什麼編碼格式去讀取

字元編碼應用:

1)pyhton2

在python2中有兩種字串編碼格式

1、unicode:

x=u'上'

x為unicod型別

2、unicode編碼後的結果

x='上'

#如果檔案頭為coding:utf-8,那麼"上"被存成utf-8格式的二進位制 x為str型別

在python3只有一種字串編碼格式:

1、unicode

x='上』 x為str型別

書寫

#

***#

coding:gbk

x='上』

x.decode('

gbk')#

coding:gbk

x=u'上'

x.encode(

'gbk')

x.encode(

'utf-8

')

理解編碼與解碼

unicode-------編碼encode-------->gbk

unicode

<-------解碼decode--------gbk

2)python3

在python3中(*****)

x='上'

x只能進行編碼

x.encode(

'gbk

')

3)pyhton2與python3使用總結

總結python2與python3:

(***)

在python2中的字元粗型別str都是unicode按照檔案頭的指定的編碼,編碼之後的結果

在python2中也可以製造unicode編碼的字串。需要在字串前加u

(*****)

在python3中的字串型別str都是unicode編碼的

所以python3中的字串型別可以編碼成其他字元編碼格式,編碼的結果

是bytes型別

bytes型別與二進位制的演變:

#

看「中」bytes—二級制之間的轉換

res='

中'.encode('

utf-8')

print(res) #

b'\xe4\xb8\xad'

#迴圈取出這個bytes

for i in b'

\xe4\xb8\xad':

print

(i)'''

228184

173'''

#發現字元「中」由三個3位資料構成,即228 184 173,

#將其轉化成二進位制格式

print(bin(228)) #

0b11100100

print(bin(184)) #

0b10111000

print(bin(173)) #

0b10101101

#二進位制,即在計算機中的儲存方式

#發現字元「中」的utf-8編碼方式為:11100100 10111000 10101101,這也是它在計算機中儲存的方式。

#ascii碼能夠表示的字元(0-9a-za-z及一些標點符號轉義字元等)轉化成utf-8碼不發生改變,因為utf-8編碼是ascii編碼的超集。

res1='

afafa!@#

'.encode('

utf-8

') #

b'afafa!@#'

print

(res1)

#而實際上儲存的是各字元的ascii碼值:

for j in b'

afafa!@#':

print

(j)'''

97102

6570

6533

6435

'''

python字元編碼

ascii 碼是乙個位元組,通常只能顯示英文本母和數字。unicode碼為了顯示多種語言產生,但是要占用兩個位元組,顯示文字要占用大量空間 utf 8 為了節約空間而生,英文本元只用乙個位元組儲存,中文字元需要三個位元組 character ascii unicode utf 8 a01000000...

python字元編碼

列印python檔案編碼 import sys print sys.getdefaultencoding 中文的乙個字元unicode占用2個位元組。對在於ascii字元占用1個位元組 utf 8中 中文字元佔3個位元組,英文本元占用1個位元組 編碼和轉碼 unicode不能再解碼了 它是基層的 u...

Python字元編碼

在用python程式設計中,字串有兩種表示方法 string 和 u string 為什麼字串要是用這兩種表達方式。不是僅僅用前一種呢?使用type 函式檢視,它們各自是str物件和unicode物件。這兩個物件有什麼差別嗎?還有經經常使用到的encode 和decode 又是幹什麼的呢?都說pyt...