python元组支持双向索引吗_2、Python列表和元组
2、Python序列
序列是一種數據存儲方式,類似于C語言的數組。簡單的說序列是一塊用來存儲多個值的連續內存空間,同一個序列的元素通常是相關的。
Python中常用的序列結構有列表、元組、字典、字符串、集合等,字典和集合是無序的,其他三個都支持雙向索引。一般0為第一個序列,但是python可以用負數做下標序列,最后一個下標為-1,之前的為-2,以此類推。
2.1列表
列表的所有元素放在一堆方括號中相鄰元素之間用逗號分開,元素擴充或刪除時,列表自動擴充或縮減,但盡量向列表末尾進行增刪操作。同一列表中元素類型可以不同,可以是基本類型,也可以是序列類型。
2.1.1列表的創建和刪除
創建:a_list=[]空列表
a_list=['a','b','zxlc']
也可以用list()函數將元組、range對象、字符串或其他類型的對象轉換成列表例如:
a_list=list((3,5,7,9)) #將元組轉換成列表
list(range(1,10,2) #將range對象轉換成列表(range函數:第一個參數是起始數,第二個參數是終止數,第三個數是步長)
list('hello world') #將字符串轉換成列表
x=list() #創建空列表
刪除:del a_list
2.1.2列表元素添加
1、append()方法,在列表末尾添加一個元素
a_list.append(i)
2、+,創建一個新列表,在舊列表后加上這個新列表
a_list=a_list+[i]
3、extend()方法可以將其他元素放在后面
4、insert()方法可以按元素順序插入元素
5、用乘法來擴展列表對象,將列表與整數相乘,生成一個新序列,新序列是之前序列的重復,相當于另外創建了一個序列(id不同)
2.1.3列表元素刪除
1、使用del命令刪除列表中的指定位置上的元素。
a_list=[3,5,7,9,11]
del a_list[1]
a_list
[3,7,9,11]
2、pop()方法刪除并返回指定位置上的元素(默認為最后一個),如果指定的索引超出了范圍,就拋出異常。
3、remove()方法刪除首次出現的指定元素,如果列表中不存在這個元素,則拋出異常。
***每次執行完插入和刪除操作,元素的索引都會改變
2.1.4列表元素查詢和計數
查詢可以直接用下標
index()函數可以查看指定元素的索引
count()函數可以計數某元素出現的次數
2.1.5判斷元素是否在列表中
用in
3 in a_list
2.1.6切片操作
切片使用兩個冒號分隔的三個數字來完成:第一個數字為切片開始位置(默認為0);第二個數字為切片截止(但不包含)位置(默認為列表長度),第三個數字為切片的步長(默認為1),當步長省略時,最后一個冒號也可以省略
例如 aList=[3,4,5,6,7,9,11,13,15,17]
>>>aList[::-1]
[17,15,13,11,9,7,6,5,4,3]
>>>aList[::2]
[3 ,5,7,11,15]
用切片復制列表是一個中淺克隆,而直接列表等號賦值是深克隆。
2.1.7列表排序
利用sort()函數,返回排序后的原列表。
默認為升序:aList.sort()
改為降序:aList.sort(reverse=true)
利用sorted()函數,返回排序后的新列表
2.1.8列表中常用的方法
1、cmp()比較大小
2、len()返回列表長度
3、max()、min()返回列表的最大最小值
4、sum()返回列表值的和
5、zip()將多個列表或元組對應位置的元素組合成為元組并返回包含這些元組的zip對象
alist=[1,2,3]
blist=[4,5,6]
clist=[7,8,9]
dlist=zip[alist,blist,clist]
dlist
[(1,4,7),(2,5,8),(3,6,9]
2.1.9列表推導式
>>>alist=[x*x for x in range(10)]
相當于
>>>alist=[]
>>>for x in range(10):
alist.append(x*x)
2.2元組
元組為不可變序列,元組一旦創建,用任何辦法都無法修改其元素的值,也無法增加刪除元素,確實需要修改則可以再創建一個元組。放在一對圓括號中。
2.2.1元組創建
a_tuple=('a','b')
如果僅僅創建一個只有一個元素的元組,那么在這個元素后需要加一個逗號,不然會認為是該元素本身。
2.2.2元組刪除
del()
2.2.3元組和序列的區別
1、元組不可變,所以不能有增刪改元素;序列可變,有許多函數可以增刪改元素
2、元組通過tuple()函數可以凍結列表使其不可變;而列表通過list()函數可以融化元組,使其可變。
不過元組中的元素可以包含可變的序列。
2.2.4序列解包
在元組中,可以用序列解包進行多變量同時賦值
>>>x,y,z=1,2,3
>>>print(x,y,z)
在字典中,默認是對字典的鍵操作,如果需要對鍵值對操作,需要使用字典的items()方法,如果需要對字典的值操作,則需要使用字典的values()方法指定。
>>>a=[1,2,3]
>>>b,c,d=a
>>>s={'a':1,'b':2,'c':3}
>>>b,c,d=s.itmes()
>>>b
('a',1)
>>>b,c,d=s
>>>b
'a'
>>>b,c,d=s.values()
>>>print(b,c,d)
1 3 2
2.2.5生成器推導式
用圓括號,返回為一個生成器對象,可以將其強轉為一個列表或者一個元組,也可以使用生成器對象的_next_()方法進行遍歷,或者直接將其作為迭代器對象來使用,不過只能訪問一次,還想訪問需要重新創建。
>>>g=((i+2)**2 for i in range(10))
這是個生成器對象,意為4,9,16.。。。,121
>>>g.next()
4
>>>g.next()
9
總結
以上是生活随笔為你收集整理的python元组支持双向索引吗_2、Python列表和元组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 外部网络如何获取网口打印机的ip地址_网
- 下一篇: 农行随薪贷在哪里申请