1. 程式人生 > >Python基礎-列表、元祖、字典、字符串

Python基礎-列表、元祖、字典、字符串

找到 討論 fin 重復 連接 反向 實現 一起 訪問

列表和分組

序列概覽:

數據結構是通過某種方式組織在一起的數據元素的集合。這些元素可以是數字、字符,甚至可以是其他數據結構。

在python中,最基本的數據結構是序列(sequence)。

序列中的每一個元素被分配一個序號----即元素的位置,也稱為索引、下標。第一個索引是0,第二個索引是1,以此類推。

Python包含6種內建的序列,此次重點討論最常用的兩種類型:列表、元祖。其他內建序列類型包括:字符串、Unicode字符串、buffer對象和xrange對象。接下來講解對所有序列都通用的操作。

列表和元祖的創建:

列表和元祖主要的區別在於:列表可以修改,而元祖不可修改。也就是說如果需要根據要求來添加元素,那麽列表可能會更好用;而出於某些原因,序列不能修改時,使用元祖則更為合適。

創建一個列表,只要把逗號分隔的不同數據項使用方括號括起來即可;

創建一個元祖,只要把逗號隔開的不同數據項使用小括號括起來即可,如果元組裏只有一個元素的話,那麽你必須在這個元素後面加一個逗號,否則它不是元組。

技術分享圖片

通用序列操作:

所有序列類型都可以進行某種特定的操作。這些操作包括索引(indexing)、分片(slicing)、加(adding)、乘(multiplying)以及檢查某個元素是否屬於序列的成員(成員資格),除此之外,還有計算序列長度、找出最大元素和最小元素的內建函數。

1. 索引

序列中的所有元素都是有編號的:從0開始遞增。這些元素可以通過編號分別訪問。這些編號就是索引。索引0指向第一個元素。

使用負數索引時,python會從右邊,就是最後一個元素開始計數。最後一個元素的位置編號就是-1。

技術分享圖片

如果一個函數調用返回一個序列,那麽可以直接對返回結果進行索引操作。例如你只對用戶輸入年份的第4個數字感興趣:

技術分享圖片

2.分片

索引訪問單個元素,分片可以訪問一定範圍的元素。分片通過冒號隔開的兩個索引來實現。

第一個索引是要提取的第一個元素的編號,第二個索引是分片之後剩余部分的第一個元素的編號;簡單來說,就是“顧頭不顧尾”。

技術分享圖片

步長:進行分片的時候,默認步長為1;我們也可以顯示設置步長,若步長被設置為大於1的數,則會跳過某些元素。

例如:步長為2的分片包括的是從開始到結束每隔1個的元素

技術分享圖片

步長不可以為0,會報錯;但是可以為負數,此時分片從右往左提取元素。

1、當步長為正數時,開始索引要小於結束索引,否則會取到空

2、當步長為負數時,開始索引要大於結束索引,否則會取到空

3、當步長為負數,開始索引為空時,開始索引默認為最後一個索引+1

4、當步長為負數,結束索引為空時,結束索引默認為0

技術分享圖片

3.序列相加

通過使用加運算符可以進行序列的連接操作。

技術分享圖片

只有兩種相同類型的序列才能進行連接操作,否則會報錯:

技術分享圖片

4. 乘法

用數字X乘以序列,會生成一個新的序列。在新的序列中,原來的序列將被重復X次。

技術分享圖片

None、空列表和初始化

空列表可以簡單的通過兩個中括號來表示([]).

None是一個python內建值,代表“這裏什麽也沒有”

若是想要初始化一個長度為10的列表:

技術分享圖片

5.成員資格

為了檢查一個值是否在序列中,可以使用in運算符。

這個運算符檢查某個條件是否為真,然後返回相應的值:條件為真,返回True;條件為假,返回False。

這樣的運算符為布爾運算符,返回的值為布爾值。

技術分享圖片

6. 長度、最小值、最大值

len函數:返回序列中所包含的元素的數量

min函數:返回序列中最小的元素

max函數:返回序列中最大的元素

技術分享圖片

基本的列表操作

1.改變列表:元素賦值

使用索引標記為某個特定的、位置明確的元素賦值。

技術分享圖片

註:不能為一個位置不存在的元素進行賦值

如果一個列表長度為5,那麽不能為位置為11的的元素賦值。

技術分享圖片

2.刪除元素

Del語句實現刪除。

技術分享圖片

列表方法

1.append

append方法適用於在列表末尾追加新的對象。

在x列表末尾新增一個值為100的對象:

技術分享圖片

2.count

count方法統計某個元素在列表中出現的次數。

統計x列表中1出現的次數:

技術分享圖片

3.index

index方法用於從列表中找出某個值第一個匹配項的索引位置。

查找x列表中值為1的元素出現的第一個位置:

技術分享圖片

查找的元素不存在時:

技術分享圖片

4.insert

在指定位置插入元素。

在‘北京’後插入‘香港’:

技術分享圖片

5.pop

移除列表中的一個指定的元素(默認是最後一個)。

移除最後一個元素、移除角標為0的元素:

技術分享圖片

pop有返回值:

技術分享圖片

6.remove

移除列表中某個值的第一個匹配項。

刪除x列表中值為1的第一個元素:

技術分享圖片

無返回值,與pop相反。

技術分享圖片

7.reverse

將列表中的元素反向存放。

技術分享圖片

無返回值,與pop相反。

技術分享圖片

8.sort

在原位置對列表進行排序。(字母、漢字都可以排序。)

升序:列表名.sort();降序:列表名.sort(reverse=True)

技術分享圖片

當需要一個排好序的列表副本,同時需要保留原列表不變時,下面這種做法是錯誤的,因為sort方法不返回值。

最後得到的是已排序的x和空的y。

技術分享圖片

正確的做法是先把x賦值給y:

技術分享圖片

字典:

字典由多個鍵與其對應的值構成的鍵-值對組成。鍵與它的值之間用冒號【:】隔開,項之間用逗號【,】隔開,整個字典由一對大括號括起來【{}】。

字典中的鍵是唯一的,值不唯一。字典打印輸出是無序的。

1.查詢

d[k]:返回關聯到鍵k上的值。

技術分享圖片

訪問字典中不存在的鍵時會報錯:

技術分享圖片

get方法:訪問字典中不存在的鍵時,不會報錯,而是得到了None。還可以自己定義“默認”值,替換None。

技術分享圖片

2.增加

d[k]=v:將值v關聯到鍵k上。

如果鍵k不存在的話,新增一個鍵k及相應的值;

如果鍵k存在的話,覆蓋原有的值。

技術分享圖片

Setdefault方法:類似get方法,能獲得與給定鍵相關聯的值,還能在字典中不含有給定鍵的情況下設定相應的鍵值。

當鍵存在時,返回與其對應的值,不改變字典;

當鍵不存在時,更新字典。

技術分享圖片

3.刪除

del d[k] :刪除鍵為k的項。

技術分享圖片

Pop方法:獲得對應於給定鍵的值,然後將這個鍵-值對從字典中移除。

技術分享圖片

4.清空字典

clear方法:清除字典中所有的項,無返回值(或者說返回None)。

技術分享圖片

技術分享圖片

5.獲取字典內容

print(d.values()) :打印所有值

print(d.keys()) :打印所有鍵

print(d.items()) :打印所有鍵和對應的值

技術分享圖片

打印嵌套字典:print(第一個字典名[‘第二個字典’][‘第三個字典’]...[‘list’])

技術分享圖片

6.循環

註意:字典元素的順序通常無序的。

1)直接循環一個字典的話,循環的是字典的key;

如果只需要值,可以使用d.values(),

技術分享圖片

2)同時獲取鍵及鍵對應的值:

技術分享圖片

7.檢查d中是否含有鍵為k的項

print(key in d) / print(key not in d)

技術分享圖片

字符串

1.strip

返回去除兩側(不包括內部)的空格及換行(\n)的字符串:

技術分享圖片

input().strip() :去掉輸入值的空格

技術分享圖片

去掉指定的值:

技術分享圖片

2.count

統計字符串出現的次數:

技術分享圖片

3.index

找出某個值第一個匹配項的索引位置。

技術分享圖片

4.find

在字符串中查找子串,返回子串所在位置的最左端的索引。如果沒有找到,返回-1。

技術分享圖片

5.replace

替換字符串,將【day】換成【DAY】:

技術分享圖片

6.isdigit

判斷字符串是否為純數字

技術分享圖片

7.startswith

判斷是否以某個字符串開頭

技術分享圖片

8.endswith

判斷是否以某個字符串結束

技術分享圖片

9.upper:返回字符串的大寫字母版

lower:返回字符串的小寫字母版

技術分享圖片

10.isalpha

判斷字符串是否全為字

技術分享圖片

11.isalnum

判斷是否包含字母和數字,只要有字母或數字就返回True

技術分享圖片

Python基礎-列表、元祖、字典、字符串