python 列表与元组的操作简介
上一篇:Python 序列通用操作介紹
列表
列表是可變的(mutable)——可以改變列表的內容,這不同于字符串和元組,字符串和元組都是不可變的。接下來討論一下列表所提供的方法。
list函數
可以使用list函數來創建列表:
list('Hello') ['H', 'e', 'l', 'l', 'o']列表的基本操作
在Python 序列通用操作介紹中提及的操作全部適用于列表,例如索引、分片、連接、乘法等。而且由于列表是可以修改的,所以多了一些元素賦值、元素刪除、分片賦值的方法。
改變列表元素的值
>>> >>> a=list('ooooo') >>> a[2]='A' >>> a ['o', 'o', 'A', 'o', 'o'] >>>刪除列表元素
使用del對列表元素進行刪除:
>>> a ['o', 'o', 'A', 'o', 'o'] >>> del a[2] >>> a ['o', 'o', 'o', 'o'] >>> len(a) 4刪除之后,列表的長度也變成了4.關于del語句的使用后續介紹。
分片賦值
使用分片賦值可以同時改變一個范圍內的字符:
>>> >>> str1= list('abcdef') >>> str1 ['a', 'b', 'c', 'd', 'e', 'f'] >>> str1[3:]=list('abc') >>> str1 ['a', 'b', 'c', 'a', 'b', 'c'] >>>不止如此,分片賦值更強大的功能是使用長度不等的序列替換分片:
#長序列替換短分片 >>> str2=list('ppp') >>> str2 ['p', 'p', 'p'] >>> str2[1:]=('ython') >>> str2 ['p', 'y', 't', 'h', 'o', 'n'] >>> >>>#短序列替換長分片 >>> str2= list('abcdefg') >>> str2 ['a', 'b', 'c', 'd', 'e', 'f', 'g'] >>> str2[1:]= list('bc') >>> str2 ['a', 'b', 'c'] >>>利用分片操作,我們可以實現序列的插入操作---插入不過是替換掉某段“空”分片:
>>> str3=[1,5] >>> str3[1:1]=[2,3,4] >>> str3 [1, 2, 3, 4, 5] >>>列表方法
方法與函數關系密切。方法本身就是函數,只不過這函數是和對象結合在一起的,通過對象來調用方法。面向對象語言中這些方法可稱為接口。方法調用的語法為:
對象.方法(參數)
接下來我們就來看看列表這種類型的對象提供了什么方法(接口)。
append
功能:用于在列表末尾追加新的元素
>>> lst=[1,2,3] >>> lst.append(4) >>> lst [1, 2, 3, 4] >>>count
功能:用于統計某個元素在列表中出現的次數
>>> [1,2,3,4,5,2,3,1,2,3,42,1,2,3,5].count(1) 3 >>>extend
功能:在列表末尾一次性追加另一個序列中的多個值
>>> >>> a=[1,2,3] >>> b=[4,5,6] >>> a.extend(b) >>> a [1, 2, 3, 4, 5, 6] >>>index
功能:用于從列表中找出某個值第一個匹配項的索引位置
>>> a=['Me','and','my','broken'] >>> a.index('my') 2 >>>insert
功能:用于將對象插入到列表中對應位置
>>> >>> number=[1,2,3,4,5] >>> number.insert(3,'hello') >>> number [1, 2, 3, 'hello', 4, 5] >>> number.insert(3,6) >>> number [1, 2, 3, 6, 'hello', 4, 5] >>>pop
功能:該方法從列表中彈出一個元素,默認是最后一個。并且返回彈出的元素
>>> >>> number=[1,2,3,4,5,6,7,8] >>> a = number.pop() >>> a 8 >>> number [1, 2, 3, 4, 5, 6, 7] >>>利用append(從末尾添加一個元素)方法,我們可以來實現一種常見的數據結構--棧。
當然,POP方法可以從序列中彈出任意位置的元素:
>>> >>> number [1, 2, 3, 4, 5, 6, 7] >>> number.pop(3) 4 >>> number [1, 2, 3, 5, 6, 7] >>>remove
功能:從列表中移除某個值的第一個匹配項。與pop不同的是,該方法并不返回移除的元素。
>>> str4 = list('hello') >>> str4 ['h', 'e', 'l', 'l', 'o'] >>> str4.remove('l') >>> str4 ['h', 'e', 'l', 'o'] >>>reverse
功能:該方法對序列方向存放
>>> >>> number [1, 2, 3, 5, 6, 7] >>> number.reverse() >>> number [7, 6, 5, 3, 2, 1] >>>注意該方法改變了列表但是沒有返回值。
如果需要對一個序列進行反向迭代,可以使用reversed函數。這個函數并不返回一個列表,而是返回一個迭代器對象,可以使用list把迭代器對象轉換成列表:
>>> >>> number [7, 6, 5, 3, 2, 1] >>> number = list(reversed(number)) >>> number [1, 2, 3, 5, 6, 7] >>>sort
功能:用于在原位置度列表進行排序。 在原位置意味著列表會被修改。
>>> number [1, 4, 3, 7, 4, 8, 3, 2, 7, 9] >>> number.sort() >>> number [1, 2, 3, 3, 4, 4, 7, 7, 8, 9] >>>應注意的是,sort()方法的返回值并不是序列本身,而是None。
如何保存原序列順序而進行排序?
- 方法一
注意將列表x賦值給列表y時千萬別使用直接賦值,否則y與x指向了相同的對象,對y的修改即是對x的修改:
>>> >>> x [3, 5, 7, 3, 1, 2, 4] >>> y=x >>> y.sort() >>> x [1, 2, 3, 3, 4, 5, 7] >>> y [1, 2, 3, 3, 4, 5, 7] >>>- 方法二
當然,你也可以使用函數來進行排序。
函數:sorted().
功能:對任何序列進行排序,結果返回一個排好序的列表。
>>> >>> x=[3,5,2,1,7,4,8,9,3] >>> y=sorted(x) >>> x [3, 5, 2, 1, 7, 4, 8, 9, 3] >>> y [1, 2, 3, 3, 4, 5, 7, 8, 9] >>>如何修改排序規則?
從上面的例子我們看到,sort方法的默認排序都是升序的。sort方法有兩個可選的參數,可以通過它來修改排序規則:
- key
key參數提供一個在排序過程中使用的函數,利用該函數來為列表中元素創造一個鍵(key),依據鍵來對列表元素(值)進行排序。
>>> >>> str5= ['one','year','like','any','old','other','year'] >>> #默認的排序依據字符串排序規則 >>> str5.sort() >>> str5 ['any', 'like', 'old', 'one', 'other', 'year', 'year'] >>> #使用key參數來修改排序規則 >>> #我們使用字符長度作為鍵來排序 >>> str5.sort(key=len) >>> str5 ['any', 'old', 'one', 'like', 'year', 'year', 'other'] >>>- reverse
另一個參數reverse是個簡單的bool值,用來指明是否要反向排序;
>>> >>> num=[2,3,4,5,6,78,4,3,3,4,5,8,9] >>> num.sort() >>> num [2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 8, 9, 78] >>> num.sort(reverse=True) >>> num [78, 9, 8, 6, 5, 5, 4, 4, 4, 3, 3, 3, 2]借助參數key,我們可以定義自己的比較函數來自定義比較規則。函數的定義在后面進行介紹。
元組
元組與列表的區別就在于,元組是一種不可變序列。元組變量的賦值要在定義時就進行,這就像C語言中的const變量或是C++的引用,定義時賦值之后就不允許有修改。元組存在的意義是:
- 元組在映射中可以作為鍵使用,因為要保證鍵的不變性。
- 元組作為很多內置函數和方法的返回值存在。
tuple()函數
類比于列表的list()函數,元組有tuple()函數來返回元組。
>>> >>> tul1= tuple('abcdef') >>> tul1 ('a', 'b', 'c', 'd', 'e', 'f') >>>元組語法
從tuple返回的元組我們看到,元組的語法是用圓括號(大部分時候是)括起來的、用逗號加以分隔的元素的集合。逗號在元組構成中十分重要:
>>> >>> #這是一個數學數 >>> (1) 1 >>> #這是一個元組 >>> (1,) (1,) >>>一個更加明顯的例子:
>>> >>> a = 10*(1) >>> b = 10*(1,) >>> a 10 >>> b (1, 1, 1, 1, 1, 1, 1, 1, 1, 1) >>>了解了逗號在元組構成的重要性后,我們來看如何定義各種元組
定義元組
定義空元組
>>> >>> tul1=() >>> tul1 () >>>定義只有一個元素的元組
>>> >>> tul2=(1,) >>> tul2 (1,) >>>定義多個元素構成的元組類似于定義一個元素的元組,也可以使用tuple函數把其他序列轉換為元組:
>>> >>> a = [1,2,3,4,5,6] >>> b = tuple (a) >>> b (1, 2, 3, 4, 5, 6) >>>元組操作
因為元組不可修改,與列表比較少了很多操作,比如attend、insert 等。而其他操作例如分片、索引操作等都類似于列表。故在使用元組時,時刻記住元組不可修改,自然就知道元組有哪些操作了。
多謝看完文章,如所記有差錯懇請指出。
轉載于:https://www.cnblogs.com/QG-whz/p/4782809.html
總結
以上是生活随笔為你收集整理的python 列表与元组的操作简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jdeveloper优化:
- 下一篇: python会什么比c慢