您好,登錄后才能下訂單哦!
bytes、bytearray
bytes:
不可變字節(jié)序列
bytearray:
字節(jié)數(shù)組
可變
字符串與bytes
字符串是字符組成的有序序列,字符可以使用編碼來理解
bytes是字節(jié)組成的有序的不可變序列
bytearray是字節(jié)組成的有序的可變序列
編碼與解碼
字符串按照不同的字符集編碼encode返回字節(jié)序列bytes
encode(encoding='utf-8', errors='strict') -> bytes
字節(jié)序列按照不同的字符集解碼decode返回字符串
bytes.decode(encoding="utf-8", errors="strict") -> str
bytearray.decode(encoding="utf-8", errors="strict") -> str
Python第二周 學(xué)習(xí)筆記(2)
bytes定義
bytes() 空bytes
bytes(int) 指定字節(jié)的bytes,被0填充
bytes(iterable_of_ints) -> bytes [0,255]的int組成的可迭代對(duì)象
bytes(string, encoding[, errors]) -> bytes 等價(jià)于string.encode()
bytes(bytes_or_buffer) -> immutable copy of bytes_or_buffer 從一個(gè)字節(jié)序列或者buffer復(fù)制出
一個(gè)新的不可變的bytes對(duì)象
使用b前綴定義
只允許基本ASCII使用字符形式b'abc9'
使用16進(jìn)制表示b"\x41\x61"
bytes操作
bytes.fromhex(string)
string必須是2個(gè)字符的16進(jìn)制的形式,'6162 6a 6b',空格將被忽略
hex()
返回16進(jìn)制表示的字符串
索引
b'abcdef'[2] 返回該字節(jié)對(duì)應(yīng)的數(shù),int類型
bytearray定義
bytearray() 空bytearray
bytearray(int) 指定字節(jié)的bytearray,被0填充
bytearray(iterable_of_ints) -> bytearray [0,255]的int組成的可迭代對(duì)象
bytearray(string, encoding[, errors]) -> bytearray 近似string.encode(),不過返回可變對(duì)象
bytearray(bytes_or_buffer) 從一個(gè)字節(jié)序列或者buffer復(fù)制出一個(gè)新的可變的bytearray對(duì)象
注意,b前綴定義的類型是bytes類型
bytearray操作
和bytes類型的方法相同
bytearray(b'abcdef').replace(b'f',b'k')
bytearray(b'abc').find(b'b')
類方法 bytearray.fromhex(string)
string必須是2個(gè)字符的16進(jìn)制的形式,'6162 6a 6b',空格將被忽略
bytearray.fromhex('6162 09 6a 6b00')
hex()
返回16進(jìn)制表示的字符串
bytearray('abc'.encode()).hex()
索引
bytearray(b'abcdef')[2] 返回該字節(jié)對(duì)應(yīng)的數(shù),int類型
append(int) 尾部追加一個(gè)元素
insert(index, int) 在指定索引位置插入元素
extend(iterable_of_ints) 將一個(gè)可迭代的整數(shù)集合追加到當(dāng)前bytearray
pop(index=-1) 從指定索引上移除元素,默認(rèn)從尾部移除
remove(value) 找到第一個(gè)value移除,找不到拋ValueError異常
注意:上述方法若需要使用int類型,值在[0, 255]
clear() 清空bytearray
reverse() 翻轉(zhuǎn)bytearray,就地修改
切片操作
可迭代 for ... in
len()可以獲取長(zhǎng)度
通過下標(biāo)可以訪問
可以切片
如:列表、元組、字符串、bytes、bytearray、set、dict
切片
通過索引區(qū)間訪問線性結(jié)構(gòu)的一段數(shù)據(jù)
sequence[start:stop] 表示返回[start, stop)區(qū)間的子序列
支持負(fù)索引
start為0,可以省略
stop為末尾,可以省略
超過上界(右邊界),就取到末尾;超過下界(左邊界),取到開頭
start一定要在stop的左邊
[:] 表示從頭至尾,全部元素被取出,等效于copy()方法
步長(zhǎng)切片
[start:stop:step]
step為步長(zhǎng),可以正、負(fù)整數(shù),默認(rèn)是1
step要和start:stop同向,否則返回空序列
IPython使用
幫助
?
ipython自帶操作文檔
help(name)
查詢指定名稱的幫助
obj?
列出obj對(duì)象的詳細(xì)信息
obj??
列出更加詳細(xì)的信息
特殊變量
前一次輸出
""
倒數(shù)第二次輸出
""
倒數(shù)第三次輸出
_dh
路徑歷史
_oh
輸出歷史
shell命令
!command
執(zhí)行shell命令
魔術(shù)方法
使用%百分號(hào)開頭的,IPython內(nèi)置的特殊方法
%magic 格式
% 開頭是line magic
%% 開頭是 cell magic,notebook的cell
%alias 定義一個(gè)系統(tǒng)命令的別名
%timeit statement
-n 一個(gè)循環(huán)loop執(zhí)行語句多少次
-r 循環(huán)執(zhí)行多少次loop,取最好的結(jié)果
%%timeit setup_code
code..
%cd 改變當(dāng)前工作目錄,cd可以認(rèn)為是%cd的鏈接。路徑歷史在_dh中查看
%pwd、pwd 顯示當(dāng)前工作目錄
%ls 、ls 返回文件列表
%%js、%%javascript 在cell中運(yùn)行js腳本
%%js
alert('a'+1)
封裝和解構(gòu)
封裝
將多個(gè)值使用逗號(hào)分割,組合在一起
本質(zhì)上,返回一個(gè)元組,只是省掉了小括號(hào)
解構(gòu)
把線性結(jié)構(gòu)的元素解開,并順序的賦給其它變量
左邊接納的變量數(shù)要和右邊解開的元素個(gè)數(shù)一致
使用 變量名 接收,但不能單獨(dú)使用
被 變量名 收集后組成一個(gè)列表
如果不關(guān)心一個(gè)變量,就可以定義改變量的名字為_
這是一個(gè)慣例,是一個(gè)不成文的約定,不是標(biāo)準(zhǔn)
_是一個(gè)合法的標(biāo)識(shí)符,也可以作為一個(gè)有效的變量使用,但是定義成下劃線就是希望不要被使用,除非你明確的知道這個(gè)數(shù)據(jù)需要使用
總結(jié)
_ 這個(gè)變量本身無任何語義,沒有任何可讀性,所以不是用來給人使用的
Python中很多庫(kù),都使用這個(gè)變量,使用十分廣泛。請(qǐng)不要在不明確變量作用域的情況下,使用 導(dǎo)致和庫(kù)中 沖突
set
可變的、無序的、不重復(fù)的元素的集合
初始化
set() -> new empty set object
set(iterable) -> new set object
set的元素
set的元素要求必須可以hash
目前學(xué)過的不可hash的類型有l(wèi)ist、set
元素不可以索引
set可以迭代
set增加
add(elem)
增加一個(gè)元素到set中
如果元素存在,什么都不做
update(*others)
合并其他元素到set集合中來
參數(shù)others必須是可迭代對(duì)象
就地修改
set刪除
remove(elem)
從set中移除一個(gè)元素
元素不存在,拋出KeyError異常
discard(elem)
從set中移除一個(gè)元素
元素不存在,什么都不做
pop() -> item
移除并返回任意的元素
空集返回KeyError異常
clear()
移除所有元素
成員運(yùn)算符
in 和 not in 判斷元素是否在set中
set和線性結(jié)構(gòu)
set、dict等結(jié)構(gòu),內(nèi)部使用hash值作為key,時(shí)間復(fù)雜度可以做到O(1),查詢時(shí)間和數(shù)據(jù)規(guī)模無關(guān)
可hash
數(shù)值型int、float、complex
布爾型True、False
字符串string、bytes
tuple
None
以上都是不可變類型,成為可哈希類型,hashable
set的元素必須是可hash的
集合運(yùn)算
并集
union(others)
返回和多個(gè)集合合并后的新的集合
| 運(yùn)算符重載
等同union
update(others)
和多個(gè)集合合并,就地修改
|=
等同update
交集
intersection(others)
返回和多個(gè)集合的交集
&
等同intersection
intersection_update(others)
獲取和多個(gè)集合的交集,并就地修改
&=
等同intersection_update
差集
difference(others)
返回和多個(gè)集合的差集
_
等同difference
difference_update(others)
獲取和多個(gè)集合的差集并就地修改
-=
等同difference_update
對(duì)稱差集
集合A和B,由所有不屬于A和B的交集元素組成的集合,記作(A-B)∪(B-A)
symmetric_differece(other)
返回和另一個(gè)集合的差集
^
等同symmetric_differece
symmetric_differece_update(other)
獲取和另一個(gè)集合的差集并就地修改
^=
等同symmetric_differece_update
issubset(other)、<=
判斷當(dāng)前集合是否是另一個(gè)集合的子集
set1 < set2
判斷set1是否是set2的真子集
issuperset(other)、>=
判斷當(dāng)前集合是否是other的超集
set1 > set2
判斷set1是否是set的真超集
isdisjoint(other)
當(dāng)前集合和另一個(gè)集合沒有交集
沒有交集,返回True
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。