Python3列表和元組

數據結構

數據結構是以某種方式組合起來的數據元素的集合。在Python中基本的數據結構就是序列

序列

列表元組;區別:列表可以修改,元組不可以修改

例:  a = ['name',age] 序列可包含其他序列,比如:all=[a,a]

Python支持數據結構的基本概念,叫容器。容器可包含其他對象的對象。兩種主要的容器是序列(列表和元組)和映射(字典)。在序列中每個元素都有編號;在映射中,每個元素都有;有一種既不是序列也不是映射的容器,叫集合(Set)。

序列的所有元素都是從0開始遞增,叫做索引,當使用複數索引的時候,Python將從最後一個元素開始往左數,即-1是最後一個元素

切片

切片用來訪問特定範圍內的元素 tag[9:30]截取tag中第9到第30位的值,包前不包後

例:num = [1,2,3,4,5,6,7,8,9,10]

num[3:6]==>[4,5,6] num[-3:-1]==>[8,9]  num[-3,0]==>[](因爲0是第一位),正確的寫法是num[-3:]==>[8,9,10](指的是取值取到結束);同理;要是省略第一個索引,則從頭開始;num[:3]==>[1,2,3];兩個索引都省略====>複製整個序列

固定步長:即將按照指定步長跳過一些元素 num[0:10:2]==>[1,3,5,7,9]

步長不能爲0,否則無法向前移動;但是步長可以爲負數,即從右向左提取元素

num[8:3:-1]==>[9,8,7,6,5];num[10:0:-2]==>[10:0:-2]==>[10,8,6,4,2];num[0:10:-2]==>[];num[::-2]==>[10,8,6,4,2];num[5::-2]==>[6,4,2];num[:5:-2]==>[10,8]

步長爲負數時候,如果開始值和結束值都存在,則開始值必須比結束值大;如果有一個數不存在,則負數步長則按照從右到左開始提取。

相加

序列中用相加來拼接序列 [1,2,3]+[4,5,6]==>[1,2,3,4,5,6]

注:不同類型的序列無法完成拼接,會報錯,比如int拼string就會報錯

乘法

序列與x相乘,將序列裏面的元素複製x次     [4]*5==>[4,4,4,4,4]

None:表示什麼都沒有,如果要創建長度爲10的空序列==>[None]*10

成員資格

檢查特定的值是否包含在序列中,使用運算符 in,包含返回True,不包含返回False

str = 'abcdefg'

'abc' in str ==>True;可以檢查一個字符串是否是另一個字符串的子串

列表

使用字符串來創建列表  list(‘Hello’)==>['H','e','l','l','o'](可以將任何序列作爲list的參數)

修改元素

修改列表中元素的值m[2] = 6,將列表中第三個元素變爲6;:不能給不存在的元素賦值

刪除元素

del m[2],刪除列表中第三個元素,後面的前移

給切片賦值

name=list('Perl')==>['P','e','r','l']

name[2:] = list['mm']==>['P','e','m','m']

而且,利用切片賦值可以替換長度與其不同的序列

切片賦值可以在不替換原有元素的情況下插入新元素 num =  [1,5]    num[1:1] = [2,3,4]==>[1,2,3,4,5] 

列表方法

append:在列表末尾追加

clear:清空列表的內容

copy:複製列表 b = a指向的是一個地址,改變b的值a也跟着改變;  b=a.copy這時候b指向的是a的副本,不影響a的值

count:計算指定元素在列表中出現了多少次

extend: 同時將多個值附加到列表末尾,即將一個列表extend到另一個列表裏面(拼接的效率會低於extends)

               a[1,2,3]   b[4,5,6]  a.extend(b)    a==>[1,2,3,4,5,6];

index:查找指定值第一次出現的索引   注意:不能查找本來不存在的值

insert:用於將一個對象成仇人列表。參數1:插入位置 ;參數2:插入內容

pop:從裂帛啊中刪除一個元素 ,並返回這一元素   p.pop():pop了最後一個元素 ;p.pop(0):pop第一個元素;pop是唯一一個      修改列表又返回一個非None值的列表方法                                                                                                                                                pop實現棧:後進先出;python中沒有push,用append代替

remove:用於刪除第一個作爲指定值的元素,若有兩個或者多個同樣的值,則刪除第一個;不能remove列表中不存在的值

reverse:按照相反的順序排列列表中元素,但不返回任何值,只是單純的修改表元素

reversed:這個函數不返回列表,而是返回一個迭代器 x = [1,2,3]   list(reversed(x))==>[3,2,1]

sort:對列表就地排序,對原來的列表進行修改,不返回副本;不返回任何值

sorted:獲取排序後的列表副本

高級排序:sort中有兩個可選參數 key和reverse;key:用於排序的函數(排序規則);reverse:true相反/false 是否按照相反的              順序進行排序

元組

元組不能修改,只要將一些值用逗號分隔,就能自動創建一個元組

1,2,3==>(1,2,3)

():空括號表示一個空元組   42,表示只包含一個值的元組,一定要加上逗號

tuple的工作原理與list很像:將一個序列作爲參數,並將其轉換爲元組

tuple([1,2,3])==>(1,2,3)  tuple('abc')==>('a','b','c')  tuple((1,2,3))==>(1,2,3)

元組的切片是元組

元組可以用作映射中的鍵、集合的成員,但是列表不行

有些內置函數和方法返回元組,一般情況下而言,使用列表足以滿足對序列的需求

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章