Python內(nèi)置序列一(元組和列表)

Python序列類型

容器序列:

list靶病、tuple会通、和collections.deque這些序列能存放不同類型的數(shù)據(jù)。

扁平序列:

str娄周、bytes渴语、bytearray、memoryview和array.array昆咽,這些序列只能容納一種類型。

容器序列存放的是它們所包含的任意類型的對象的引用,而扁平序列里存放的是值而不是引用掷酗,換句話說调违,扁平序列其實是一段連續(xù)的內(nèi)存空間。由此可見扁平序列其實更加緊湊泻轰,但是它里面只能存放諸如字符技肩、字節(jié)和數(shù)值這種基礎(chǔ)類型。

可變序列

list浮声、bytearray虚婿、array.array、collections.deque和memoryview

不可變序列

tuple泳挥、str和bytes

列表推導

示例1:把一個字符串變成unicode碼位的列表


示例2


示例2為列表推導的結(jié)果然痊,通常的原則是,只用列表推導來創(chuàng)建新的列表屉符,并且盡量保持簡短剧浸。

元組

元組是不可變列表。

元組拆包

例一:city, year,pop,chg,area=('Tokyo',2003,32450,0.66,8014)

例二:交換兩個變量的值:a, b = b, a

例三:>>>t = (20, 8) ? >>>quotient, remainder = div(*t)

對對象進行切片

我們可以用s[a:b:c]的形式對s在a和b之間以c為間隔取值

對序列使用+和*

python程序員會默認序列是支持+和*的矗钟。通常+號兩側(cè)的序列由相同類型的數(shù)據(jù)所構(gòu)成唆香,在拼接的過程中,兩個被操作的序列都不會被修改吨艇,python會新建一個包含同類型數(shù)據(jù)的序列來作為拼接的結(jié)果躬它。

如果想要把一個序列復制幾份然后再拼接起來,更快捷的做法是把這個序列乘以一個整數(shù)东涡。

+和*都遵循這個規(guī)律冯吓,不修改原有的操作對象,而是構(gòu)建一個全新的序列软啼。

建立由列表組成的列表

例:一個包含3個列表的列表桑谍,嵌套3個列表各自有3個元素來代表井字游戲的一行方塊,使用了列表推導


下例展示了另一個方法祸挪,這個方法看上去是個誘人的捷徑锣披,但實際上是錯的


上述這個例子相當于把一個對象追加3次

序列的增量賦值

增量賦值運算符+=和*=的表現(xiàn)取決于它們的第一個操作對象,+=背后的特殊方法是__iadd__贿条,但是如果一個類沒有實現(xiàn)這個方法的話雹仿,python會退一步調(diào)用__add__。

如果a實現(xiàn)了__iadd__方法整以,就會調(diào)用這個方法胧辽。同時對可變序列(例如list、bytearray和array.array)來說公黑,a會就地改動邑商,就像調(diào)用了a.extend(b)一樣摄咆。但是如果a沒有實現(xiàn)__iadd__的話,a+=b這個表達式的效果就變得跟a=a+b一樣了人断,首先計算a+b吭从,得到一個新的對象,然后賦值給a恶迈。也就是說涩金,在這個表達式中,變量名會不會關(guān)聯(lián)到新的對象暇仲,完全取決于這個類型有沒有實現(xiàn)__iadd__這個方法步做。

總的來講,可變序列一般都實現(xiàn)了__iadd__方法奈附,而不可變序列不支持這個操作全度。

list.sort方法和內(nèi)置函數(shù)sorted

list.sort方法會就地排序列表,也就是說不會把原列表復制一份桅狠。這也是這個方法的返回值是None的原因讼载,與list.sort相反的是內(nèi)置函數(shù)sorted,它會新建一個列表作為返回值中跌。這個方法可以接受任何形式的可迭代對象作為參數(shù)咨堤。

這兩個函數(shù)的關(guān)鍵字參數(shù):

reverse:如果被設(shè)定為True,被排序的序列里的元素會以降序輸出漩符。

key:一個只有一個參數(shù)的函數(shù)一喘,這個函數(shù)會被用在序列里的每一個元素上。

當列表不是首選時

雖然列表既靈活又簡單嗜暴,但面對各類需求時凸克,我們可能會有更好的選擇。比如闷沥,要存放1000萬個浮點數(shù)的話萎战,數(shù)組(array)的效率要高的多,因為數(shù)組在背后存放的并不是float對象舆逃,而是數(shù)字的機器翻譯蚂维,也就是字節(jié)表述。再比如說路狮,如果需要頻繁對序列做先進先出的操作虫啥,deque的速度會快得多

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市奄妨,隨后出現(xiàn)的幾起案子涂籽,更是在濱河造成了極大的恐慌,老刑警劉巖砸抛,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件评雌,死亡現(xiàn)場離奇詭異树枫,居然都是意外死亡,警方通過查閱死者的電腦和手機柳骄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門团赏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人耐薯,你說我怎么就攤上這事∷坷铮” “怎么了曲初?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長杯聚。 經(jīng)常有香客問我臼婆,道長,這世上最難降的妖魔是什么幌绍? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任颁褂,我火速辦了婚禮,結(jié)果婚禮上傀广,老公的妹妹穿的比我還像新娘颁独。我一直安慰自己,他們只是感情好伪冰,可當我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布誓酒。 她就那樣靜靜地躺著,像睡著了一般贮聂。 火紅的嫁衣襯著肌膚如雪靠柑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天吓懈,我揣著相機與錄音歼冰,去河邊找鬼。 笑死耻警,一個胖子當著我的面吹牛隔嫡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播榕栏,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼畔勤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了扒磁?” 一聲冷哼從身側(cè)響起庆揪,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎妨托,沒想到半個月后缸榛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吝羞,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年内颗,在試婚紗的時候發(fā)現(xiàn)自己被綠了钧排。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡均澳,死狀恐怖恨溜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情找前,我是刑警寧澤糟袁,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站躺盛,受9級特大地震影響项戴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜槽惫,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一周叮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧界斜,春花似錦仿耽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至得糜,卻和暖如春敬扛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背朝抖。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工啥箭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人治宣。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓急侥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親侮邀。 傳聞我的和親對象是個殘疾皇子坏怪,可洞房花燭夜當晚...
    茶點故事閱讀 45,870評論 2 361

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