key-value鍵值對的資料的集合
可變的、無序的key不重複d[key]
返回key對應的值value
key不存在丟擲keyerror異常
get(key[, default])
返回key對應的值value
key不存在返回預設值,如果沒有設定預設值就返回none
setdefault(key[, default])
返回key對應的值value
key不存在,新增kv對,value設定為default,並返回default,如果default沒有設定,預設為none
d[key] = value
將key對應的值修改為value
key不存在新增新的kv對
update([other]) -> none
使用另乙個字典的kv對更新本字典
key不存在,就新增
key存在,覆蓋已經存在的key對應的值
就地修改
pop(key[, default])
key存在,移除它,並返回它的value
key不存在,返回給定的default
default未設定,key不存在則丟擲keyerror異常
popitem()
移除並返回乙個任意的鍵值對
字典為empty,丟擲keyerror異常
clear()
清空字典
總結
python3中,keys、values、items方法返回乙個類似乙個生成器的可迭代物件,不會把函式的返回結果複製到記憶體中
返回dictionary view物件,可以使用len()、iter()、in操作
字典的entry的動態的檢視,字典變化,檢視將反映出這些變化
keys返回乙個類set物件,也就是可以看做乙個set集合。
如果values都可以hash,那麼items也可以看做是類set物件
python2中,上面的方法會返回乙個新的列表,佔據新的記憶體空間。所以python2建議使用iterkeys、
itervalues、iteritems版本,返回乙個迭代器,而不是返回乙個copy
key的要求和set的元素要求一致
set的元素可以就是看做key,set可以看做dict的簡化版
hashable 可雜湊才可以作為key,可以使用hash()測試
d =
collections.defaultdict([default_factory[, …]])
第乙個引數是default_factory,預設是none,它提供乙個初始化函式。當key不存在的時候,會呼叫
這個工廠函式來生成key對應的value
collections.ordereddict([items])
key並不是按照加入的順序排列,可以使用ordereddict記錄順序
有序字典可以記錄元素插入的順序,列印的時候也是按照這個順序輸出列印
3.6版本的python的字典就是記錄key插入的順序(ipython不一定有效果)
對日期、時間、時間戳的處理
datetime類
類方法today() 返回本地時區當前時間的datetime物件
now(tz=none) 返回當前時間的datetime物件,時間到微秒,如果tz為none,返回和today()一樣
utcnow() 沒有時區的當前時間
fromtimestamp(timestamp, tz=none) 從乙個時間戳返回乙個datetime物件
datetime物件
timestamp() 返回乙個到微秒的時間戳。
時間戳:格林威治時間2023年1月1日0點到現在的秒數
標準庫datetime
構造方法 datetime.datetime(2016, 12, 6, 16, 29, 43, 79043)
year、month、day、hour、minute、second、microsecond,取datetime物件的年月日時
分秒及微秒
weekday() 返回星期的天,周一0,週日6
isoweekday() 返回星期的天,周一1,週日7
date() 返回日期date物件
time() 返回時間time物件
replace() 修改並返回新的時間
isocalendar() 返回乙個三元組(年,週數,周的天)
日期格式化*
類方法 strptime(date_string, format) ,返回datetime物件
物件方法 strftime(format) ,返回字串
字串format函式格式化
time.sleep(secs) 將呼叫執行緒掛起指定的秒數
語法[返回值 for 元素 in 可迭代物件 if 條件]
使用中括號,內部是for迴圈,if條件語句可選
返回乙個新的列表
總結(返回值 for 元素 in 可迭代物件 if 條件)立即計算
返回的不是迭代器,返回可迭代物件列表
從前到後走完一遍後,可以重新回頭迭代
列表解析式的中括號換成小括號就行了
返回乙個生成器
和列表解析式的區別
生成器表示式是按需計算(或稱惰性求值、延遲計算),需要的時候才計算值
列表解析式是立即返回值
生成器可迭代物件
迭代器
總結:計算方式延遲計算
返回迭代器,可以迭代
從前到後走完一遍後,不能回頭
生成器表示式延遲計算,列表解析式立即計算
記憶體占用
單從返回值本身來說,生成器表示式省記憶體,列表解析式返回新的列表
生成器沒有資料,記憶體占用極少,它是使用時乙個個返回資料。如果將這些返回的資料合起來占用的記憶體也和列表解析式差不多。但是,它不需要立即占用這麼多記憶體
列表解析式構造新的列表需要立即占用記憶體,不管你是否立即使用這麼多資料
計算速度
單看計算時間看,生成器表示式耗時非常短,列表解析式耗時長
但是生成器本身並沒有返回任何值,只返回了乙個生成器物件
列表解析式構造並返回了乙個新的列表,所以看起來耗時了
語法列表解析式的中括號換成大括號{}就行了
立即返回乙個集合
語法列表解析式的中括號換成大括號{}就行了
使用key:value形式
立即返回乙個字典
生成器和迭代器是不同的物件,但都是可迭代物件
可迭代物件範圍更大,都可以使用for迴圈遍歷
簡單選擇排序
屬於選擇排序
兩兩比較大小,找出極值(極大值或極小值)被放置在固定的位置,這個固定位置一般指的是某一端
結果分為公升序和降序排列
降序n個數從左至右,索引從0開始到n-1,兩兩依次比較,記錄大值索引,此輪所有數比較完畢,將大數和索引0數交換,如果大數就是索引0,不交換。第二輪,從1開始比較,找到最大值,將它和索引1位置交換,如果它就在索引1位置則不交換。依次類推,每次左邊都會固定下乙個大數。
公升序和降序相反
Python雜湊表和解析式
toc 說明 等號 右邊有多個數值僅通過逗號分割,就會封裝到乙個元組,稱為封裝packing。示例 x 1,y 1,2 print type x x print type y y 輸出結果如下 1,1,2 備註 如果右邊只有乙個數值且沒有用逗號,其實是乙個整數型別,請留意。另外等號右邊一定先執行,再...
解析式(列表 集合 字典)
返回值 for 元素 in可迭代物件 if條件 注 可用多個for迴圈或多個if條件,但不可用if elif 生成乙個列表,元素0 9,對每乙個元素自增1後求平方返回新列表 一般寫法 nums for i in range 10 i 1 2 print nums 列表解析式 nums nums i ...
封裝結構 集合 字典及各種解析式
交換 解構 丟棄變數 總結 set set定義 初始化 set的元素 set增加 update others set刪除 discard elem pop item clear set修改 查詢 set和線性結構 set的元素必須是可hash的 集合 集合運算 交集 intersection upd...