草根學Python(三)List 和 Tuple

前言

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

目錄

一、List(列表)

Python 內置的一種數據類型是列表:list。 list 是一種有序的集合,可以隨時添加和刪除其中的元素。

1、創建 List(列表)

創建一個列表,只要把逗號分隔的不同的數據項使用方括弧括起來即可,且列表的數據項不需要具有相同的類型

list1=[兩點水,twowter,liangdianshui,123]n

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

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

list1=[兩點水,twowter,liangdianshui,123]n# 通過索引來訪問列表nprint(list1[2])n# 通過方括弧的形式來截取列表中的數據nprint(list1[0:2])n

輸出的結果:

3、更新 List(列表)

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

list1=[兩點水,twowter,liangdianshui,123]nprint(list1)n# 通過索引對列表的數據項進行修改或更新nlist1[2]=456nprint(list1)n# 使用 append() 方法來添加列表項nlist1.append(hello);nprint(list1)n

輸出的結果:

4、刪除 List(列表)

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

list1=[兩點水,twowter,liangdianshui,123]nprint(list1)n# 使用 del 語句來刪除列表的的元素ndel list1[3]nprint(list1)n

輸出的結果:

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-*-n#-----------------------list的使用----------------------------------nn# 1.一個產品,需要列出產品的用戶,這時候就可以使用一個 list 來表示nuser=[liangdianshui,twowater,兩點水]nprint(1.產品用戶)nprint(user)nn# 2.如果需要統計有多少個用戶,這時候 len() 函數可以獲的 list 里元素的個數nlen(user)nprint(n2.統計有多少個用戶)nprint(len(user))nn# 3.此時,如果需要知道具體的用戶呢?可以用過索引來訪問 list 中每一個位置的元素,索引是0從開始的nprint(n3.查看具體的用戶)nprint(user[0]+,+user[1]+,+user[2])nn# 4.突然來了一個新的用戶,這時我們需要在原有的 list 末尾加一個用戶nuser.append(茵茵)nprint(n4.在末尾添加新用戶)nprint(user)nn# 5.又新增了一個用戶,可是這個用戶是 VIP 級別的學生,需要放在第一位,可以通過 insert 方法插入到指定的位置n# 注意:插入數據的時候注意是否越界,索引不能超過 len(user)-1nuser.insert(0,VIP用戶)nprint(n5.指定位置添加用戶)nprint(user)nn# 6.突然發現之前弄錯了,「茵茵」就是VIP用戶,因此,需要刪除「茵茵」;pop() 刪除 list 末尾的元素nuser.pop()nprint(n6.刪除末尾用戶)nprint(user)nn# 7.過了一段時間,用戶「liangdianshui」不玩這個產品,刪除了賬號n# 因此需要要刪除指定位置的元素,用pop(i)方法,其中i是索引位置nuser.pop(1)nprint(n7.刪除指定位置的list元素)nprint(user)nn# 8.用戶「兩點水」想修改自己的昵稱了nuser[2]=三點水nprint(n8.把某個元素替換成別的元素)nprint(user)nn# 9.單單保存用戶昵稱好像不夠好,最好把賬號也放進去n# 這裡賬號是整數類型,跟昵稱的字元串類型不同,不過 list 裡面的元素的數據類型是可以不同的n# 而且 list 元素也可以是另一個 listnnewUser=[[VIP用戶,11111],[twowater,22222],[三點水,33333]]nprint(n9.不同元素類型的list數據)nprint(newUser)n

二、tuple(元組)

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

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

1、創建 tuple(元祖)

元組創建很簡單,只需要在括弧中添加元素,並使用逗號隔開即可。

tuple1=(兩點水,twowter,liangdianshui,123,456)ntuple2=兩點水,twowter,liangdianshui,123,456n

創建空元組

tuple3=()n

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

tuple4=(123,)n

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

2、tuple(元組)的索引

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

3、訪問 tuple (元組)

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

#-*-coding:utf-8-*-nntuple1=(兩點水,twowter,liangdianshui,123,456)ntuple2=兩點水,twowter,liangdianshui,123,456nnprint(tuple1[1])nprint(tuple2[0])n

輸出的結果:

4、修改 tuple (元組)

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

具體看下面的這個例子:

#-*-coding:utf-8-*-nlist1=[123,456]ntuple1=(兩點水,twowater,liangdianshui,list1)nprint(tuple1)nlist1[0]=789nlist1[1]=100nprint(tuple1)n

輸出的結果:

(兩點水, twowater, liangdianshui, [123, 456])n(兩點水, twowater, liangdianshui, [789, 100])n

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

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

5、刪除 tuple (元組)

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

#-*-coding:utf-8-*-nntuple1=(兩點水,twowter,liangdianshui,[123,456])nprint(tuple1)ndel tuple1n

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)將列錶轉換為元組


推薦閱讀:

TAG:Python | Python教程 | Python入门 |