Python數(shù)據(jù)結(jié)構(gòu)

Python中數(shù)據(jù)結(jié)構(gòu)可以統(tǒng)稱(chēng)為容器馍惹,常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)包括序列(列表和元組等),映射(字典)和集合(Set)玛界。
一 万矾、序列(列表,元組和字符串)

  1. 列表
    內(nèi)容可變——中括號(hào) []

創(chuàng)建列表

list1=['hello','world'] 
print (list1) 
list2=[1,2,3] 
print (list2)

list 函數(shù)
可以通過(guò)list函數(shù)對(duì)字符串創(chuàng)建列表

list3=list("hello") 
print (list3)
#輸出:['h', 'e', 'l', 'l', 'o']

列表函數(shù)

  • append --- 用于在列表末尾追加新的對(duì)象
#Input: 
lst=[1,2,3] 
lst.append(4)
#Output:
[1,2,3,4]
  • count --- 統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù)
#Input: 
x=[1,2,1,1,2,2,3] 
x.count(1)
#Output: 
3
  • extend --- 在列表的末尾一次性追加另個(gè)序中多值
#Input:
a=[1,2,3]
b=[4,5,6]
a.extend(b)
#Output: 
[1,2,3,4,5,6]
  • Index --- 用于從列表中找到某個(gè)值第一匹配項(xiàng)的索引位置
lst.index(‘A’)
  • insert --- 用于將對(duì)象插入到列表中
#Input:
numbers=[1,2,3,5,6,7] 
numbers.insert(3,’four’)
#Output: 
[1,2,3,’four’,5,6,7]
  • pop --- 移除列表中的一個(gè)元素(默認(rèn)最后)慎框,并返回該值 移除列表中的一個(gè)元素(默認(rèn)最后)良狈,并返回該值 移除列表中的一個(gè)元素(默認(rèn)最后),并返回該值笨枯,pop方法是唯一個(gè)既能修改列表又返回元素之(除了 None)的列表方法
#Input:
x=[1,2,3,5,6,7] 
x.pop( )
#Output: 
7
  • remove --- 用于移出列表中某個(gè)值的第一匹配項(xiàng) (修改列表但無(wú)返回值 )
Input:
x=[‘to’,’be’,’or’,’not’,’to’,’be’] 
x.remove(‘be’)
Output: 
[‘to’,’or’,’not’,’to’]
  • reverse --- 將列表中的元素反向存放
#Input:
x=[1,2,3] 
x.reverse() 
#Output: 
[3,2,1]
  • sort --- 用于在原位置對(duì)列表進(jìn)行排序 用于在原位置對(duì)列表進(jìn)行排序
#Input:
x=[4,6,2,1,7,9] 
x.sort( )
#Output: 
[1,2,4,6,7,9]
  1. 元組
    元組內(nèi)容不可變——小括號(hào)()

創(chuàng)建元組

t1=1,2,3 
t2="jeffreyzhao","cnblogs" 
t3=(1,2,3,4) 
t4=() 
t5=(1,) 
print (t1,t2,t3,t4,t5)

a. 逗號(hào)分隔一些值薪丁,元組自動(dòng)創(chuàng)建完成;
b. 元組大部分時(shí)候是通過(guò)圓括號(hào)括起來(lái)的馅精;
c. 空元組可以用沒(méi)有包含內(nèi)容的圓括號(hào)來(lái)表示严嗜;
d. 只含一個(gè)值的元組,必須加個(gè)逗號(hào)(,)洲敢;

tuple函數(shù)
tuple函數(shù)和序列的list函數(shù)幾乎一樣:以一個(gè)序列作為參數(shù)并把它轉(zhuǎn)化為元組漫玄。如果 參數(shù)就算元組,那么該會(huì)原樣返回:

t1=tuple([1,2,3]) 
t2=tuple("jeff")
t3=tuple((1,2,3)) 
print (t1) 
print (t2)
print (t3) 
t4=tuple(123) 
print (t45) 
#輸出: 
(1, 2, 3) 
('j', 'e', 'f', 'f') 
(1, 2, 3)
TypeError: 'int' object is not iterable

zip函數(shù)
zip函數(shù)接受任意多個(gè)序列作為參數(shù)压彭,返回一個(gè)tuple列表睦优。
zip函數(shù)是內(nèi)置函數(shù),能把迭代對(duì)象進(jìn)行聚合哮塞,返回值是迭代對(duì)象聚合后的元組,可以用list函數(shù)把他轉(zhuǎn)化成列表凳谦。

>>> k=list(zip(*[[1,2,3],[4,5,6]]))
>>> k
[(1, 4), (2, 5), (3, 6)]
  1. 字符串
    內(nèi)容不可變——引號(hào)‘’

創(chuàng)建

str1='Hello world' 
print (str1) 
print (str1[0])
for c in str1: 
    print (c)

格式化
字符串格式化使用格式化操作符即百分號(hào) %來(lái)實(shí)現(xiàn)忆畅。

  1. 通用序列操作

索引
索引從 0(從左向右)開(kāi)始,所有序列可通過(guò)這種方式進(jìn)行索引。神奇的是,索引可以從最后一個(gè)位 置(從右向左)開(kāi)始家凯,編號(hào)是 -1缓醋。

str1='Hello' 
nums=[1,2,3,4] 
t1=(123,234,345) 
print (str1[0]) 
print (nums[1]) 
print (t1[2]) 
輸出: 
H 
2
345

分片
分片操作用來(lái)訪問(wèn)一定范圍內(nèi)的元素。通過(guò)冒號(hào)相隔兩個(gè)索引實(shí)現(xiàn):[a:b:c] 通常不包括索引為 b的數(shù)據(jù) 绊诲,c為步長(zhǎng)送粱。分片的操作需要提供兩個(gè)索引為邊界,第一元素是包含在內(nèi)掂之,而第二個(gè)則不包含在內(nèi)抗俄。
序列相加

str1='Hello' 
str2=' world'
print (str1+str2) 
num1=[1,2,3] 
num2=[2,3,4] 
print (num1+num2)
print (str1+num1) 
#輸出: 
Hello world 
[1, 2, 3, 2, 3, 4]
TypeError: must be str, not list

乘法
只能與數(shù)字相乘,元素個(gè)數(shù)翻倍

print ([None]*10) 
str1='Hello' 
print (str1*2) 
num1=[1,2] 
print (num1*2)
print (str1*num1) 
#輸出: 
[None, None, None, None, None, None, None, None, None, None] 
HelloHello 
[1, 2, 1, 2]
TypeError: can't multiply sequence by non-int of type 'list'

成員資格
in運(yùn)算符會(huì)用來(lái)檢查一個(gè)對(duì)象是否為某序列(或者其他類(lèi)型) 的成員即元素

str1='Hello' 
print ('h' in str1)
print ('H' in str1)
#輸出: 
False 
True

長(zhǎng)度世舰、最大小值
通過(guò)內(nèi)建函數(shù) len动雹、maxmin可以返回序列中所包含元素的數(shù)量、最大值和最小值跟压。

二胰蝠、映射
鍵類(lèi)型
字典的鍵可以是數(shù)字、符串或者元組 震蒋,鍵必須唯一茸塞。
在 Python中, 數(shù)字查剖、符串和元組都被設(shè)計(jì)成不可變類(lèi)型钾虐,而常見(jiàn)的列表以及集合都是可變的,所以列表和集合不能作為字典鍵 梗搅。字典鍵可以為任何不可變類(lèi)型

A={key:value 禾唁,} 
A[key]=value

自動(dòng)添加
即使鍵在字典中并不存,也可以為它分配一個(gè)值這樣就會(huì)建立新的項(xiàng)无切。
成員資格
表達(dá)式 item in d(d為字典)查找的是鍵(contains key)荡短,而不是值( contains value)。

三哆键、集合

strs=set(['jeff','wong','cnblogs']) 
nums=set(range(10))

1.副本是被忽略的掘托,即元素唯一性
2.集合元素的順序是隨意
3.集合常用方法:
A.union(B)
union操作返回兩個(gè)集 合的并,不改變?cè)屑?籍嘹。使用按位與(OR)運(yùn)算符 “|”可 以得到一樣的結(jié)果
其他常見(jiàn)操作包括 &(交集) ,<=,>=,-,copy(),add和remove
4.frozenset
集合是可變的闪盔,所以不能用做字典鍵。本身只包含值也就其他可以使用frozenset類(lèi)型用于代表不可變(散列)的集合類(lèi)型用于代表不可變(散列)的集合Set1.add(frozenset(set2)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辱士,一起剝皮案震驚了整個(gè)濱河市泪掀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌颂碘,老刑警劉巖异赫,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帜羊,死亡現(xiàn)場(chǎng)離奇詭異油讯,居然都是意外死亡掰盘,警方通過(guò)查閱死者的電腦和手機(jī)涛目,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)靠抑,“玉大人量九,你說(shuō)我怎么就攤上這事∷瘫蹋” “怎么了荠列?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)稚伍。 經(jīng)常有香客問(wèn)我弯予,道長(zhǎng),這世上最難降的妖魔是什么个曙? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任锈嫩,我火速辦了婚禮,結(jié)果婚禮上垦搬,老公的妹妹穿的比我還像新娘呼寸。我一直安慰自己,他們只是感情好猴贰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布对雪。 她就那樣靜靜地躺著,像睡著了一般米绕。 火紅的嫁衣襯著肌膚如雪瑟捣。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天栅干,我揣著相機(jī)與錄音迈套,去河邊找鬼。 笑死碱鳞,一個(gè)胖子當(dāng)著我的面吹牛桑李,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窿给,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼贵白,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了崩泡?” 一聲冷哼從身側(cè)響起禁荒,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎角撞,沒(méi)想到半個(gè)月后呛伴,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體寥掐,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年磷蜀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片百炬。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡褐隆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出剖踊,到底是詐尸還是另有隱情庶弃,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布德澈,位于F島的核電站歇攻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏梆造。R本人自食惡果不足惜缴守,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望镇辉。 院中可真熱鬧屡穗,春花似錦、人聲如沸忽肛。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)屹逛。三九已至础废,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間罕模,已是汗流浹背评腺。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留手销,地道東北人歇僧。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像锋拖,于是被迫代替她去往敵國(guó)和親诈悍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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

  • 〇兽埃、前言 本文共108張圖侥钳,流量黨請(qǐng)慎重! 歷時(shí)1個(gè)半月柄错,我把自己學(xué)習(xí)Python基礎(chǔ)知識(shí)的框架詳細(xì)梳理了一遍舷夺。 ...
    Raxxie閱讀 18,954評(píng)論 17 410
  • 一给猾、概述:Python中兩種基本的數(shù)據(jù)結(jié)構(gòu)是序列和映射疫萤,序列包含:可變的列表和不可變的元組;而當(dāng)序列不夠用時(shí)就出現(xiàn)...
    KennyP0618閱讀 431評(píng)論 0 0
  • 最近在自學(xué)Python躯砰,遇到了一些數(shù)據(jù)結(jié)構(gòu)方面的問(wèn)題每币,熟悉使用字符串、列表琢歇、元組兰怠、字典這四種數(shù)據(jù)結(jié)構(gòu)對(duì)理解Pyth...
    王曉航閱讀 3,208評(píng)論 0 9
  • 紀(jì)念這個(gè)忙碌的2015年六月紀(jì)念這個(gè)冷暖自知的大學(xué)紀(jì)念這個(gè)體驗(yàn)世態(tài)炎涼的社會(huì),我追求過(guò)的會(huì)縈繞在我腦海李茫,我放棄過(guò)...
    Beijing閱讀 204評(píng)論 0 1
  • “其實(shí)痕慢,我建議不要說(shuō)什么都可以∮渴福”長(zhǎng)谷部盯著坐在床上有些不自然的大俱利伽羅掖举,覺(jué)得此刻自己的表情肯定很奇怪。 “畢竟...
    hskr閱讀 6,385評(píng)論 0 0