列表逆序排序_Python零基础入门学习05:容器数据类型:列表和元组
注:本文所有代碼均經過Python 3.7實際運行檢驗,保證其嚴謹性。
Python的數據收納盒
數據收納盒
收納數據對象的數據類型,以一種規則的下標索引方式訪問到每個數據,是一種序列(sequence)。序列可以看作是數據收納盒,它能收納數字、字符串等基本數據類型,并將之編好有序的號碼進行存放。這種編號就是索引(index)。
列表(list)和元組(tuple)均屬于序列。
列表可以刪除、添加、替換、重排其中的元素,是可變(mutable)序列類型。
元組不能更改,和字符串一樣,是不可變(immutable)序列類型。凡是涉及到元組、字符串等不可變序列類型的各種改變如刪除、添加、替換、重排等操作,都是生成一個新的元組、字符串,而原來的元組和字符串均保持不變。
關于序列的更多詳細內容請見:Python隨筆:Python內置序列函數之enumerate函數的前半部分。
上一節說過,字符串有兩套編號:
- 從左向右的編號,采用非負整數編號。從0開始編號,向右依次加1。對s = 'abc'而言,s[0] = 'a'表示s的第1個元素,s[1] = 'b'表示s的第2個元素,依此類推。
- 從右向左的編號,采用負整數編號。從-1開始,向左依次減1。對s = 'abc'而言,s[-1] = 'c'表示s的倒數第1個元素,s[-2] = 'b'表示s的 倒數第2個字符,依此類推。
列表和元組也是一樣的。如下所示:
l = ['a', 'b', 'c']l[0]Out[2]: 'a'l[-1]Out[3]: 'c't = ('a', 'b', 'c')t[0]Out[5]: 'a't[-1]Out[6]: 'c'列表和元組其余的操作如切片、查找(in、index、count)跟字符串相同,還有計算(sum、min/max)也是如此。
ls = ["cat", "dog", "tiger", 1024]ls[1: 2] = [1, 2, 3, 4] #切片print(ls)列表、元組的創建
#創建列表:l = []l = list()l = [x for x in iterable] #使用列表推導式創建列表。#創建元祖:t = ()t = tuple()元祖的單例(singleton)
元組還可以是單例(singleton),即只有一個元素在里面,如:
t1 = ('a', )值得注意的是,當元組是單例時,里面僅有的1個元素后面必須跟一個逗號“,”。逗號“,”表明了這是個元組里面的元素,而不是只是一個字符串或者數字或者字符等;若沒有逗號,則括號會被當作是運算的符號。
元組甚至也可以不要括號,直接用“,”。所以,對元組而言,括號可以沒有,但逗號一定要有。
t1 = ('a',) # 帶“,”的才是元組type(t1)Out[8]: tuplet2 = ('a') # 不帶“,”是字符串或整數。type(t2)Out[10]: strtype(t3)Out[12]: tuplet4 = 1, 2, 3type(t4)Out[14]: tuple列表的可變性
列表有一個非常重要的與眾不同之處,那就是列表是可變的(mutable)。
這個特性與其它數據類型都不相同,因為int、float、string和tuple等數據類型一旦創建后都是不可變的(immutable)。你不能通過訪問string或者tuple里的某個元素來改變他們。比如tuple一旦下了定義,再想用tuple[0]= 2這種賦值方法改變tuple時,系統將會報錯。
而列表lists則可以通過訪問某些內部元素進而改變它們的值,有時候這是非常方便的。
可變性使得程序可以被更靈活地處理。盡管如此,同樣也很容易造成程序設計錯誤。
l = [1, 2, 3, 4]l[0] = ['a']l[-1] = 'd'lOut[18]: [['a'], 2, 3, 'd']列表的操作
增長:.append()/.insert()/.extend()
縮減:.pop()/.remove()/.clear()
重新組織:.reverse()/.sort()
以s為可變類型的序列為例,其方法如下:
s.append(x)——將 x 添加到序列的末尾 (等同于 s[len(s):len(s)] = [x])。
s.insert(i, x)——在由 i 給出的索引位置將 x 插入 s (等同于 s[i:i] = [x])。
s.extend(t) 或 s += t——用 t 的內容擴展 s (基本上等同于 s[len(s):len(s)] = t)。
s.pop([i])——提取在 i 位置上的項,并將其從 s 中移除。可選參數 i 默認為 -1,因此在默認情況下會移除并返回最后一項。
s.remove(x)——刪除 s 中第一個 s[i] 等于 x 的項目。當在 s 中找不到 x 時 remove() 操作會引發 ValueError。返回值為None。
s.clear()——從 s 中移除所有項 (等同于 del s[:])。包括 clear() 和 copy() 是為了與不支持切片操作的可變容器 (例如 dict 和 set) 的接口保持一致。
s.reverse()——就地將列表中的元素逆序。當反轉大尺寸序列時 reverse() 方法會原地修改該序列以保證空間經濟性。 為提醒用戶此操作是通過間接影響進行的,它并不會返回反轉后的序列。
s.sort(*, key=None, reverse=False)——此方法會對列表進行原地排序,只使用 < 來進行各項間比較。 異常不會被屏蔽 , 如果有任何比較操作失敗,整個排序操作將失敗(而列表可能會處于被部分修改的狀態)。
合并:加法運算+,連接2個列表,生成1個新的列表。
下面是列表操作的一些例子:
l = [1, 2, 3, 4]l[0] # 訪問l中的index=0(即列表中的第1個)的元素。Out[20]: 1l.append(5) # 在l的尾部添加一個新的元素。lOut[22]: [1, 2, 3, 4, 5]l.reverse() # 使l中的元素逆序排列,并改變了l自身。lOut[24]: [5, 4, 3, 2, 1]l.clear() # 清空l中的所有元素,使得l成為一個空列表。lOut[26]: [][1, 2, 3] + [4, 5]Out[27]: [1, 2, 3, 4, 5]To be continued.
總結
以上是生活随笔為你收集整理的列表逆序排序_Python零基础入门学习05:容器数据类型:列表和元组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哪些食物是你吃一次就记一辈子?
- 下一篇: androidstudio build