重要的資料型別dict和set
dict通過key 查詢value(key和value關聯)
花括號表示這是乙個dict,然後按照key:value,寫出來即可。最後乙個key:value的都好可以省略
注意: 單元素的tuple必須在後面多家加乙個逗號
dict最後的逗號可以省略
由於dict也是集合,len()函式可以計算任意集合的大小
>>>len(d)
3 注意:乙個key-value算乙個,因此,dict大小為3
訪問dict
可以簡單的使用d[key] 的形式來查詢對應的value,這和list很像,不同之處是,list必須使用索引返回對應的元素,而dict直接使用key(通過key訪問dict的value,只要key存在,dict就返回對應的value,如果key不存在,會直接報錯:keyerror)
dict 的特點:
知識點:dict查詢速度快。list查詢速度隨著元素增加而逐漸下降。
缺點:記憶體占用大。list慢但記憶體占用小
dict的第一特點是查詢速度快,無論dict有10個元素還是10萬個元素,查詢速度都一樣。而list的查詢速度隨著元素增加而逐漸下降
不過dict的查詢速度快不是沒有代價的,dict的缺點是占用記憶體大,還會浪費很多內容,而list正相反,占用記憶體小,但是查詢速度慢
dict的第二個特點是儲存的key-value序對視沒有順序的!這和list不同(dict是按key查詢的,所以在乙個dict中,key不能重複)
例如:d=
>>>print d
列印的順序不一定是我們建立時的順序,而且不同的機器列印的順序都可能不同,這說明:dict內部是無序的,不能用dict 儲存有序的集合
dict的第三個特點是作為key的元素倪新雨不可變,python的基本型別如字串、整數、浮點數都是不可變的,都可以作為key。但是list是可變的,就不能作為key
不可變這個限制僅作用於key,value是否可變無所謂
更新dict
dict是可變的,即我們可以隨時王dict 中新增新的key-value.例如:
>>>d[『paul』]=72
>>>print d
如果key已經存在,則複製會用心的value替換原來的value
>>>d[『bart』]=60
>>>print d
遍歷dict
由於dict也是乙個集合,所以遍歷dict和遍歷list類似,都可以通過for迴圈實現
直接使用for迴圈可以便利dict的key
>>>d=
>>>for key in d:
… print key
…adam
lisa
bart
由於通過key可以獲取對應的value,因此,在迴圈體內,可以獲取到value的值
d=for key in d:
print key+」:」,d[key]
執行結果:
lisa: 85
adma: 95
bart: 59
setdict的作用是建立一組key和一組value的對映關係,dict的key是不能重複的
set持有一系列元素,這一點和list很像,但是set的元素沒有重複,而且是無序的,這點和dict的key很像
建立set的方式是呼叫set()並傳入乙個list,list的元素將作為set的元素
>>>s=set([『a』 , 』b』 , 』c』])
>>>print s
set([『a』 ,』c』,』b』 ])
注意:可以看出列印的順序與原始的list順序有可能不同,因為set內部儲存的元素是無序的
>>>s=set([『a』 , 』b』 , 』c』 , 『c』])
>>>print s
set([『a』 ,』c』,』b』 ])
>>>len(s)
3結果顯示:因為set不能包含重複的元素,所以set會自動去掉重複的元素,原來的list有4個元素,但是set只有3個
程式設計任務:請用set表示班裡的4位同學:adma,lisa,bart,paul
>>>s=set([『adma』,』lisa』,』bart』,』paul』])
print s
執行結果:
set([『lisa』,』paul』,』adma』,』bart』])
訪問set
由於set儲存的是無序集合,所以我們沒法通過索引來訪問,訪問set中的某個元素實際上就是判斷乙個元素是否在set中,可以用in操作符判斷
>>>s=set([『adma』,』lisa』,』bart』,』paul』])
>>>』bart』 in s
true
>>>』bill』 in s
false
>>>』bart』 in s
false
注意:大小寫(區分大小寫)
set的特點:
set的內部結構和dict很像,唯一區別是不儲存value,因此,判斷乙個元素是否在set中速度很快,set儲存的元素和dict的key類似,必須是不變物件,因此,任何可變物件是不能放入set中的。最後,set儲存的元素也是沒有順序的
例如:判斷使用者輸入是否是乙個有效的星期?
weekdays=set([『mon』,』tue』,』wed』,』thu』,』fri』,』sat』,』sun』])
x=』???』 #使用者輸入的字串
if x in weekdays:
print 『input ok』
else
print 『input error』
遍歷set
由於set也是乙個集合,所以,遍歷set和遍歷list類似,都可以通過for迴圈實現
>>>s=set([『adma』,』lisa』,』bart』])
>>>for name in s:
…print name
…lisa
adma
bart
注意:for迴圈在遍歷set是,元素的順序和list的順序很可能不同
更新set(add ,remove)
由於set儲存的是一組不重複的無序元素,因此,更新set主要做兩件事:
。是把新的元素新增到set中
。是把已有元素從set中刪除(前提是元素存在)
所以用add()可以直接新增,而remove()前需要判斷
python學習筆記3
1 字串的格式化操作 format variable format 是格式的樣式,variable 是要被格式化的變數 format 有如下幾種形式 o 將數值轉換為八進位制 x 將數值轉換為十六進製制 d 整數轉換符號 s 字串轉換符號 如下 o 100 144 o 100 加入乙個 號可輸出標準...
python 學習筆記3
2014 10 23 三種內建的資料結構 列表 元組和字典 list len list list.sort 修改列表本身,而不是返回乙個修改後的列表 列表時可變的,字串不可變 for item in list 遍歷 del list 0 刪除專案,自動補齊。print語句的結尾的逗號消除列印的換行符...
Python學習筆記3
條件和迴圈語句 生成隨機數的函式,此處說明一下,python是通過乙個方程來產生隨機數的,所以這些隨機數並不是真正隨機的,產生他們的方式叫做偽隨機。載入模組,本人理解模組類似c裡的庫,模組 module 含有可供其他程式使用的 的檔案,這些模組通常是按照一定的相關性進行組織的,載入模組使用 impo...