草根學Python(三)List 和 Tuple

兩點水發表於2017-06-21

前言

繼續更新,可以通過 www.readwithu.com/ 來看之前的文章。

目錄

草根學Python(三) List 和 Tuple
草根學Python(三) List 和 Tuple

一、List(列表)

Python 內建的一種資料型別是列表:list。 list 是一種有序的集合,可以隨時新增和刪除其中的元素。

1、建立 List(列表)

建立一個列表,只要把逗號分隔的不同的資料項使用方括號括起來即可,且列表的資料項不需要具有相同的型別

list1=['兩點水','twowter','liangdianshui',123]複製程式碼

2、訪問 List(列表)中的值

使用下標索引來訪問列表中的值,同樣你也可以使用方括號的形式擷取字元

list1=['兩點水','twowter','liangdianshui',123]
# 通過索引來訪問列表
print(list1[2])
# 通過方括號的形式來擷取列表中的資料
print(list1[0:2])複製程式碼

輸出的結果:

訪問 List(列表)中的值
訪問 List(列表)中的值

3、更新 List(列表)

可以通過索引對列表的資料項進行修改或更新,也可以使用 append() 方法來新增列表項。

list1=['兩點水','twowter','liangdianshui',123]
print(list1)
# 通過索引對列表的資料項進行修改或更新
list1[2]=456
print(list1)
# 使用 append() 方法來新增列表項
list1.append('hello');
print(list1)複製程式碼

輸出的結果:

更新 List(列表)
更新 List(列表)

4、刪除 List(列表)

使用 del 語句來刪除列表的的元素

list1=['兩點水','twowter','liangdianshui',123]
print(list1)
# 使用 del 語句來刪除列表的的元素
del list1[3]
print(list1)複製程式碼

輸出的結果:

刪除 List(列表)
刪除 List(列表)

5、List(列表)運算子

列表對 + 和 的操作符與字串相似。+ 號用於組合列表, 號用於重複列表。

Python 表示式 結果 描述
len([1, 2, 3]) 3 計算元素個數
[1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 組合
['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 複製
3 in [1, 2, 3] True 元素是否存在於列表中
for x in [1, 2, 3]: print x, 1 2 3 迭代

6、List (列表)函式&方法

函式&方法 描述
cmp(list1, list2) 比較兩個列表的元素
len(list) 列表元素個數
max(list) 返回列表元素最大值
min(list) 返回列表元素最小值
list(seq) 將元組轉換為列表
list.append(obj) 在列表末尾新增新的物件
list.count(obj) 統計某個元素在列表中出現的次數
list.extend(seq) 在列表末尾一次性追加另一個序列中的多個值(用新列表擴充套件原來的列表)
list.index(obj) 從列表中找出某個值第一個匹配項的索引位置
list.insert(index, obj) 將物件插入列表
list.pop(obj=list[-1]) 移除列表中的一個元素(預設最後一個元素),並且返回該元素的值
list.reverse() 反向列表中元素
list.sort([func]) 對原列表進行排序

7、例項

最後通過一個例子來熟悉瞭解 List 的操作

例子:

#-*-coding:utf-8-*-
#-----------------------list的使用----------------------------------

# 1.一個產品,需要列出產品的使用者,這時候就可以使用一個 list 來表示
user=['liangdianshui','twowater','兩點水']
print('1.產品使用者')
print(user)

# 2.如果需要統計有多少個使用者,這時候 len() 函式可以獲的 list 裡元素的個數
len(user)
print('\n2.統計有多少個使用者')
print(len(user))

# 3.此時,如果需要知道具體的使用者呢?可以用過索引來訪問 list 中每一個位置的元素,索引是0從開始的
print('\n3.檢視具體的使用者')
print(user[0]+','+user[1]+','+user[2])

# 4.突然來了一個新的使用者,這時我們需要在原有的 list 末尾加一個使用者
user.append('茵茵')
print('\n4.在末尾新增新使用者')
print(user)

# 5.又新增了一個使用者,可是這個使用者是 VIP 級別的學生,需要放在第一位,可以通過 insert 方法插入到指定的位置
# 注意:插入資料的時候注意是否越界,索引不能超過 len(user)-1
user.insert(0,'VIP使用者')
print('\n5.指定位置新增使用者')
print(user)

# 6.突然發現之前弄錯了,“茵茵”就是'VIP使用者',因此,需要刪除“茵茵”;pop() 刪除 list 末尾的元素
user.pop()
print('\n6.刪除末尾使用者')
print(user)

# 7.過了一段時間,使用者“liangdianshui”不玩這個產品,刪除了賬號
# 因此需要要刪除指定位置的元素,用pop(i)方法,其中i是索引位置
user.pop(1)
print('\n7.刪除指定位置的list元素')
print(user)

# 8.使用者“兩點水”想修改自己的暱稱了
user[2]='三點水'
print('\n8.把某個元素替換成別的元素')
print(user)

# 9.單單儲存使用者暱稱好像不夠好,最好把賬號也放進去
# 這裡賬號是整數型別,跟暱稱的字串型別不同,不過 list 裡面的元素的資料型別是可以不同的
# 而且 list 元素也可以是另一個 list
newUser=[['VIP使用者',11111],['twowater',22222],['三點水',33333]]
print('\n9.不同元素型別的list資料')
print(newUser)複製程式碼

list的使用
list的使用

二、tuple(元組)

另一種有序列表叫元組:tuple 。tuple 和 list 非常類似,但是 tuple 一旦初始化就不能修改。那麼不能修改是指什麼意思呢?

tuple 不可變是指當你建立了 tuple 時候,它就不能改變了,也就是說它也沒有 append(),insert() 這樣的方法,但它也有獲取某個索引值的方法,但是不能賦值。那麼為什麼要有 tuple 呢?那是因為 tuple 是不可變的,所以程式碼更安全。所以建議能用 tuple 代替 list 就儘量用 tuple 。

1、建立 tuple(元祖)

元組建立很簡單,只需要在括號中新增元素,並使用逗號隔開即可。

tuple1=('兩點水','twowter','liangdianshui',123,456)
tuple2='兩點水','twowter','liangdianshui',123,456複製程式碼

建立空元組

tuple3=()複製程式碼

元組中只包含一個元素時,需要在元素後面新增逗號

tuple4=(123,)複製程式碼

如果不加逗號,建立出來的就不是 tuple (元組),而是指 123 這個數了,這是因為括號 ()既可以表示 tuple,又可以表示數學公式中的小括號,這就產生了歧義,因此,Python 規定,這種情況下,按小括號進行計算,計算結果自然是 123 。具體看下圖 tuple4 和 tuple5 的輸出值

建立tuple
建立tuple

2、tuple(元組)的索引

元組下標索引從0開始,可以進行擷取,組合等。

3、訪問 tuple (元組)

tuple(元組)可以使用下標索引來訪問元組中的值

#-*-coding:utf-8-*-

tuple1=('兩點水','twowter','liangdianshui',123,456)
tuple2='兩點水','twowter','liangdianshui',123,456

print(tuple1[1])
print(tuple2[0])複製程式碼

輸出的結果:

訪問 tuple
訪問 tuple

4、修改 tuple (元組)

上面不是花了一大段來說 tuple 是不可變的嗎?這裡怎麼又來修改 tuple (元組) 了。那是因為元組中的元素值是不允許修改的,但我們可以對元組進行連線組合,還有通過修改其他列表的值從而影響 tuple 的值。

具體看下面的這個例子:

#-*-coding:utf-8-*-
list1=[123,456]
tuple1=('兩點水','twowater','liangdianshui',list1)
print(tuple1)
list1[0]=789
list1[1]=100
print(tuple1)複製程式碼

輸出的結果:

('兩點水', 'twowater', 'liangdianshui', [123, 456])
('兩點水', 'twowater', 'liangdianshui', [789, 100])複製程式碼

可以看到,兩次輸出的 tuple 值是變了的。我們看看 tuple1 的儲存是怎樣的。

修改tuple流程圖
修改tuple流程圖

可以看到,tuple1 有四個元素,最後一個元素是一個 List ,List 列表裡有兩個元素,當我們把 List 列表中的兩個元素 124456 修改為 789100 的時候,從輸出來的 tuple1 的值來看,好像確實是改變了,但其實變的不是 tuple 的元素,而是 list 的元素。tuple 一開始指向的 list 並沒有改成別的 list,所以,tuple 所謂的“不變”是說,tuple 的每個元素,指向永遠不變。注意是 tupe1 中的第四個元素還是指向原來的 list ,是沒有變的。

5、刪除 tuple (元組)

tuple 元組中的元素值是不允許刪除的,但我們可以使用 del 語句來刪除整個元組

#-*-coding:utf-8-*-

tuple1=('兩點水','twowter','liangdianshui',[123,456])
print(tuple1)
del tuple1複製程式碼

6、tuple (元組)運算子

與字串一樣,元組之間可以使用 + 號和 * 號進行運算。這就意味著他們可以組合和複製,運算後會生成一個新的元組。

Python 表示式 結果 描述
len((1, 2, 3)) 3 計算元素個數
(1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 連線
('Hi!',) * 4 ('Hi!', 'Hi!', 'Hi!', 'Hi!') 複製
3 in (1, 2, 3) True 元素是否存在
for x in (1, 2, 3): print x, 1 2 3 迭代

7、元組內建函式

方法 描述
cmp(tuple1, tuple2) 比較兩個元組元素
len(tuple) 計算元組元素個數
max(tuple) 返回元組中元素最大值
min(tuple) 返回元組中元素最小值
tuple(seq) 將列表轉換為元組

相關文章