Python的容器數(shù)據(jù)類型

Sequence序列對(duì)象

lists列表, 元組tuples, and range

通用序列操作:

  • item in或not in sequence:判斷item在或者不在序列中
  • +或符號(hào):將兩個(gè)序列相加或把一個(gè)序列內(nèi)容復(fù)制n倍, 注意可能得到的是同一對(duì)象的多個(gè)引用
  • s[n]:第n個(gè)元素媒峡,超出范圍IndexError
  • s[i:j]:第i到j(luò)個(gè)元素的切片笙瑟,包含第i個(gè)不包含第j個(gè)行楞,i為負(fù)數(shù)相當(dāng)于0坛怪,j超范圍相當(dāng)于最多
  • s[i:j:k]:第i到j(luò)個(gè)元素間隔k個(gè)取出
  • len(s):序列的元素總數(shù)
  • min(s)和max(s):按照排序的最小或最大一項(xiàng)
  • s.index(x,i,j):ij可選誊涯。序列中x的位置,i和j限定搜索范圍,返回x的位置或ValueError
  • s.count(x):s中包含x的重復(fù)數(shù)量,找不到返回0
  • for x in s:循環(huán)處理序列中的每一項(xiàng)
  • s[i:j] = t:將序列的i到j(luò)項(xiàng)替換為t,如果t為序列則直接元素對(duì)應(yīng)替換皮仁,無(wú)論t數(shù)量多少剃根;如果t為非序列,則i到j(luò)變?yōu)橐粋€(gè)t對(duì)象
  • s[i:j]=[]:相當(dāng)于刪除i到j(luò)項(xiàng)(不含j)艰管,等同del s[i:j]
  • s.append(x):將x添加到s滓侍,等同s[len(s):len(s)]=[x]
  • s.clear():清理所有元素
  • s.copy():復(fù)制整個(gè)序列,相當(dāng)于s[:]
  • s.extend(t) or s += t:合并兩個(gè)序列蛙婴,相當(dāng)于s[len(s):len(s)] = t
  • s.insert(i, x):將x插入到i位置,相當(dāng)于s[i:i] = [x]
  • s.pop(i):獲取第i項(xiàng)并從序列中刪除它尔破,如果i省略則指向最后一個(gè)
  • s.remove(x):移除x項(xiàng),如果不存在則ValueError
  • s.reverse():翻轉(zhuǎn)順序

list列表

  • 構(gòu)造方法:[],[1,2,3],[for i in range(10)],list('abc'),list((1,2,3))
>>> sorted((3,2,1))
[1, 2, 3]
>>> list((1,2,3))
[1, 2, 3]
  • 負(fù)數(shù)索引從 list 的尾部開(kāi)始向前計(jì)數(shù)來(lái)存取元素街图。任何一個(gè)非空的 list 最后一個(gè)元素總是 li[-1]
  • sorted(list, key=None, reverse=False)為列表排序,生成新排序列表
>>> li=[{'a':22},{'a':12},{'a':100}]
>>> sorted(li,key=lambda x:x['a'])
[{'a': 12}, {'a': 22}, {'a': 100}]
  • list.sort()將list排序懒构,list必須為基本對(duì)象餐济,不能是容器對(duì)象;而sorted則可以利用key對(duì)更復(fù)雜對(duì)象排序胆剧。

Tuples元組

  • 構(gòu)造方法:(a,b),(a,),(a,b,c),tuple([1,2,3])
  • 元組一旦創(chuàng)建將不可修改
  • Tuple沒(méi)有沒(méi)有append或extend方法絮姆,沒(méi)有 remove 或 pop 方法、沒(méi)有 index 方法秩霍。
  • 可以使用 in 來(lái)查看一個(gè)元素是否存在于 tuple 中篙悯。

range

  • 構(gòu)造方法:range(start,stop,step),range(10),range(5,50,5);step不能為0
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> list(range(0))
[]
>>> list(range(1, 0))
[]
  • range無(wú)論數(shù)字多少,總是占用同樣小的內(nèi)存铃绒。
  • range可以比較
>>> range(0, 3, 2) == range(0, 4, 2)
True

range存在.start,.stop,.step屬性

集合類型set

  • 集合支持x in set, len(set), and for x in set等語(yǔ)法
  • 集合中沒(méi)有重復(fù)元素
  • isdisjoint是否完全無(wú)交集
>>> a={1,2,3,4}
>>> b={3,4,5,6}
>>> a.isdisjoint(b)
False
>>> c={5,6}
>>> a.isdisjoint(c)
True
  • issubset(other)是否子集鸽照;相當(dāng)于set <= other
  • issuperset(other)是否超集;相當(dāng)于set >= other
  • union(other)與other合并颠悬;
  • intersection(*others)交集
  • difference(*others)在此集合但不在other集合
  • symmetric_difference(others)不在交集但在此集合或other集合
  • copy()復(fù)制集合
  • update(*others)將others添加進(jìn)來(lái)
  • intersection_update(*others)取交集
  • add(elem),remove(elem)添加和移除元素,如果不存在則拋出異常KeyError
  • discard(elem)刪除元素,如果不存在不報(bào)錯(cuò)
  • pop()任意去掉一個(gè)元素
  • clear()清空

字典dict

  • Dictionary 是 Python 的內(nèi)置數(shù)據(jù)類型之一, 它定義了鍵和值之間一對(duì)一的關(guān)系矮燎。
  • 每一個(gè)元素都是一個(gè) key-value 對(duì), 整個(gè)元素集合用大括號(hào)括起來(lái)
  • 您可以通過(guò) key 來(lái)引用其值, 但是不能通過(guò)值獲取 key
  • 在一個(gè) dictionary 中不能有重復(fù)的 key定血。給一個(gè)存在的 key 賦值會(huì)覆蓋原有的值
  • dictionary 的 key 是大小寫(xiě)敏感的
  • Dictionary 的值可以是任意數(shù)據(jù)類型, 包括字符串, 整數(shù), 對(duì)象, 甚至其它的 dictionary。
  • 在單個(gè) dictionary 里, dictionary 的值并不需要全都是同一數(shù)據(jù)類型, 可以根據(jù)需要混用和匹配诞外。
  • 構(gòu)建方法:{'a':11,'b':22},{11:'22',22:'bb'},鍵只能是索引數(shù)字(正負(fù)數(shù)和小數(shù)都可)或字符串
>>> a = dict(one=1, two=2, three=3)
>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
>>> d = dict([('two', 2), ('one', 1), ('three', 3)])
>>> e = dict({'three': 3, 'one': 1, 'two': 2})
>>> a == b == c == d == e
True
  • len(d)字典屬性數(shù)量
  • del d[key]刪除key澜沟,如果不存在則KeyError
  • clear(),copy()
  • fromkeys(seq[, value])用seq序列做鍵值key峡谊,所有鍵都等于value
  • get(key)獲取值茫虽,但不出錯(cuò)
  • items(),keys(),values()返回一個(gè)可枚舉的對(duì)象
>>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}
>>> keys = dishes.keys()
>>> values = dishes.values()

>>> # iteration
>>> n = 0
>>> for val in values:
...     n += val
>>> print(n)
504

>>> # keys and values are iterated over in the same order (insertion order)
>>> list(keys)
['eggs', 'sausage', 'bacon', 'spam']
>>> list(values)
[2, 1, 1, 500]

>>> # view objects are dynamic and reflect dict changes
>>> del dishes['eggs']
>>> del dishes['sausage']
>>> list(keys)
['bacon', 'spam']

>>> # set operations
>>> keys & {'eggs', 'bacon', 'salad'}
{'bacon'}
>>> keys ^ {'sausage', 'juice'}
{'juice', 'sausage', 'bacon', 'spam'}
  • pop(key)刪除一個(gè)屬性,不存在的話報(bào)錯(cuò)靖苇;popitem()刪除最后一個(gè)屬性
  • setdefault(key[, default])設(shè)置默認(rèn)值,不存在的話自動(dòng)添加
  • update(other)更新屬性值席噩,不存在的話自動(dòng)添加
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市贤壁,隨后出現(xiàn)的幾起案子悼枢,更是在濱河造成了極大的恐慌,老刑警劉巖脾拆,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件馒索,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡名船,警方通過(guò)查閱死者的電腦和手機(jī)绰上,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)渠驼,“玉大人蜈块,你說(shuō)我怎么就攤上這事∶陨龋” “怎么了百揭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蜓席。 經(jīng)常有香客問(wèn)我器一,道長(zhǎng),這世上最難降的妖魔是什么厨内? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任祈秕,我火速辦了婚禮,結(jié)果婚禮上雏胃,老公的妹妹穿的比我還像新娘请毛。我一直安慰自己,他們只是感情好瞭亮,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布获印。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪兼丰。 梳的紋絲不亂的頭發(fā)上玻孟,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音鳍征,去河邊找鬼黍翎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛艳丛,可吹牛的內(nèi)容都是我干的匣掸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼氮双,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼碰酝!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起戴差,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤送爸,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后暖释,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體袭厂,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年球匕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纹磺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡亮曹,死狀恐怖橄杨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情照卦,我是刑警寧澤式矫,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站窄瘟,受9級(jí)特大地震影響衷佃,放射性物質(zhì)發(fā)生泄漏趟卸。R本人自食惡果不足惜蹄葱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锄列。 院中可真熱鬧图云,春花似錦、人聲如沸邻邮。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)筒严。三九已至丹泉,卻和暖如春情萤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背摹恨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工筋岛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人晒哄。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓睁宰,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親寝凌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子柒傻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 上帝給我一個(gè)任務(wù), 叫我牽一只蝸牛去散步较木。 我不能走太快红符,蝸牛已經(jīng)盡力爬, 為何每次總是那么一點(diǎn)點(diǎn)劫映? 我催它违孝,我唬...
    李泳儀閱讀 758評(píng)論 0 1
  • 11月28日星期三 天氣晴 好累啊!只有等孩子睡了我才能安心的躺在床上休息了。 上午還是像昨天一樣泳赋,先去和小寶...
    a夏天的童話a閱讀 123評(píng)論 0 1
  • 當(dāng)遇到用戶模型時(shí)雌桑,主要用戶不是個(gè)精密的詞語(yǔ),區(qū)分用戶
    Binner閱讀 446評(píng)論 0 51