集合
用括號表示,可以包含多個元素,用逗號分割
用途
用於關係運算
集合特點
1.每個元素是不可變型別2.沒有重複的元素
3.無序
應用
1.set去重
set(names)的功能是將列表轉換成集合,並去除重複值但是因為集合裡面的元素時不可變的,所以set在去重時物件所包含的值不能有不可變型別,例如不能有 [ ]
names=['
zhangsan
','lisi
','wangwu
','zhangsan
','zhaoliu']
s=set(names)
(s)e:\pycharmprojects\untitled\venv\scripts\python.exe e:/pycharmprojects/untitled/平時問題積累.py
2.合集功能
pythons=linuxs=
#1.長度
(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-------->gbkunicode
<-------解碼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':
(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!@#'
(res1)
#而實際上儲存的是各字元的ascii碼值:
for j in b'
afafa!@#':
(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...