python容器

主要是以下幾種類型 甜刻,列表(list)辉饱,元組(tuple)钢颂,字典(dict)和集合(set)。這些結構和其他語言中的類似結構并無本質不同募谎。

1? 列表(list)

a = [1, 2, 3, 4]

b = [1]

c = [1]

d = b

e = [1, "Hello world!", c, False]? ? ? ? ? ?#多種類型混合

print(id(b), id(c))? ? ? ? ? ? ? ? # (194100040L, 194100552L)

print(id(b), id(d))? ? ? ? ? ? ? ? # (194100040L, 194100040L)

print(b == c)? ? ? ? ? ? ? ? ? ? ? # True

f = list("abcd")

print(f)? ? ? ? ? ? ? ? ? ? ? ? ? ? # ['a', 'b', 'c', 'd']

g = [0]*3 + [1]*4 + [2]*2 ? ? # [0, 0, 0, 1, 1, 1, 1, 2, 2]

因為變量其實是個引用扶关,所以對列表而言也沒什么不同,所以列表對類型沒什么限制数冬。也正因為如此节槐,和變量不同的是,即使用相同的語句賦值拐纱,列表的地址也是不同的铜异,在這個例子中體現(xiàn)在id(b)和id(c)不相等,而內容相等秸架。列表也可以用list()初始化揍庄,輸入?yún)?shù)需要是一個可以遍歷的結構,其中每一個元素會作為列表的一項东抹÷熳樱“*”操作符對于列表而言是復制,最后一個語句用這種辦法生成了分段的列表缭黔。

列表的基本操作有訪問食茎,增加,刪除馏谨,和拼接:

a.pop() # 把最后一個值4從列表中移除并作為pop的返回值

a.append(5)? ? ? ? # 末尾插入值别渔,[1, 2, 3, 5]

a.index(2)? ? ? ? ? # 找到第一個2所在的位置,也就是1

a[2]? ? ? ? ? ? ? ? # 取下標惧互,也就是位置在2的值钠糊,也就是第三個值3

a += [4, 3, 2]? ? ? # 拼接,[1, 2, 3, 5, 4, 3, 2]

a.insert(1, 0)? ? ? # 在下標為1處插入元素0壹哺,[1, 0, 2, 3, 5, 4, 3, 2]

a.remove(2)? ? ? ? # 移除第一個2抄伍,[1, 0, 3, 5, 4, 3, 2]

a.reverse()? ? ? ? # 倒序,a變?yōu)閇2, 3, 4, 5, 3, 0, 1]

a[3] = 9? ? ? ? ? ? # 指定下標處賦值管宵,[2, 3, 4, 9, 3, 0, 1]

b = a[2:5]? ? ? ? ? # 取下標2開始到5之前的子序列截珍,[4, 9, 3]

c = a[2:-2]? ? ? ? # 下標也可以倒著數(shù),方便算不過來的人箩朴,[4, 9, 3]

d = a[2:]? ? ? ? ? # 取下標2開始到結尾的子序列岗喉,[4, 9, 3, 0, 1]

e = a[:5]? ? ? ? ? # 取開始到下標5之前的子序列,[2, 3, 4, 9, 3]

f = a[:]? ? ? ? ? ? # 取從開頭到最后的整個子序列炸庞,相當于值拷貝钱床,[2, 3, 4, 9, 3, 0, 1]

a[2:-2] = [1, 2, 3] # 賦值也可以按照一段來,[2, 3, 1, 2, 3, 0, 1]

g = a[::-1] ? ? # 也是倒序埠居,通過slicing實現(xiàn)并賦值查牌,效率略低于reverse()

a.sort()

print(a)? ? ? ? ? ? # 列表內排序事期,a變?yōu)閇0, 1, 1, 2, 2, 3, 3]

2? 元組

元組和列表有很多相似的地方,最大的區(qū)別在于不可變纸颜,還有如果初始化只包含一個元素的tuple和列表不一樣兽泣,因為語法必須明確,所以必須在元素后加上逗號胁孙。另外直接用逗號分隔多個元素賦值默認是個tuple唠倦,這在函數(shù)多返回值的時候很好用:

a = (1, 2)

b = tuple(['3', 4]) # 也可以從列表初始化

c = (5,)

print(c)? ? ? ? ? ? # (5,)

d = (6)

print(d)? ? ? ? ? ? # 6

e = 3, 4, 5

print(e)? ? ? ? ? ? # (3, 4, 5)

3 集合

集合是一種很有用的數(shù)學操作,比如列表去重涮较,或是理清兩組數(shù)據(jù)之間的關系稠鼻,集合的操作符和位操作符有交集,注意不要弄混:

A = set([1, 2, 3, 4])

B = {3, 4, 5, 6}

C = set([1, 1, 2, 2, 2, 3, 3, 3, 3])

print(C)? ? ? ? # 集合的去重效果狂票,set([1, 2, 3])

print(A | B)? ? # 求并集候齿,set([1, 2, 3, 4, 5, 6])

print(A & B)? ? # 求交集,set([3, 4])

print(A - B)? ? # 求差集苫亦,屬于A但不屬于B的毛肋,set([1, 2])

print(B - A)? ? # 求差集怨咪,屬于B但不屬于A的屋剑,set([5, 6])

print(A ^ B)? ? # 求對稱差集,相當于(A-B)|(B-A)诗眨,set([1, 2, 5, 6])

4 字典

字典是一種非常常見的“鍵-值”(key-value)映射結構唉匾,鍵無重復,一個鍵不能對應多個值匠楚,不過多個鍵可以指向一個值巍膘。還是通過例子來了解,構建一個名字->年齡的字典芋簿,并執(zhí)行一些常見操作:

a = {'Tom': 8, 'Jerry': 7}

print(a['Tom'])? ? ? ? ? ? # 8

b = dict(Tom=8, Jerry=7)? ? # 一種字符串作為鍵更方便的初始化方式

print(b['Tom'])? ? ? ? ? ? # 8

if 'Jerry' in a:? ? ? ? ? ? # 判斷'Jerry'是否在keys里面

? ? print(a['Jerry'])? ? ? ? # 7

print(a.get('Spike'))? ? ? # None峡懈,通過get獲得值,即使鍵不存在也不會報異常

a['Spike'] = 10

a['Tyke'] = 3

a.update({'Tuffy': 2, 'Mammy Two Shoes': 42})

print(a.values())? # dict_values([8, 2, 3, 7, 10, 42])

print(a.pop('Mammy Two Shoes'))? ? # 移除'Mammy Two Shoes'的鍵值對与斤,并返回42

print(a.keys())? ? # dict_keys(['Tom', 'Tuffy', 'Tyke', 'Jerry', 'Spike'])

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末肪康,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子撩穿,更是在濱河造成了極大的恐慌磷支,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件食寡,死亡現(xiàn)場離奇詭異雾狈,居然都是意外死亡,警方通過查閱死者的電腦和手機抵皱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門善榛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辩蛋,“玉大人,你說我怎么就攤上這事锭弊】芭欤” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵味滞,是天一觀的道長樱蛤。 經(jīng)常有香客問我,道長剑鞍,這世上最難降的妖魔是什么昨凡? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮蚁署,結果婚禮上便脊,老公的妹妹穿的比我還像新娘。我一直安慰自己光戈,他們只是感情好哪痰,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著久妆,像睡著了一般晌杰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上筷弦,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天肋演,我揣著相機與錄音,去河邊找鬼烂琴。 笑死爹殊,一個胖子當著我的面吹牛,可吹牛的內容都是我干的奸绷。 我是一名探鬼主播梗夸,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼号醉!你這毒婦竟也來了反症?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤扣癣,失蹤者是張志新(化名)和其女友劉穎惰帽,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體父虑,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡该酗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呜魄。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡悔叽,死狀恐怖,靈堂內的尸體忽然破棺而出爵嗅,到底是詐尸還是另有隱情娇澎,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布睹晒,位于F島的核電站趟庄,受9級特大地震影響,放射性物質發(fā)生泄漏伪很。R本人自食惡果不足惜戚啥,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锉试。 院中可真熱鬧猫十,春花似錦、人聲如沸呆盖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽应又。三九已至宙项,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間丁频,已是汗流浹背杉允。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工邑贴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留席里,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓拢驾,卻偏偏與公主長得像奖磁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子繁疤,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359