Python基礎-列表、元祖、字典、字符串
列表和分組
序列概覽:
數據結構是通過某種方式組織在一起的數據元素的集合。這些元素可以是數字、字符,甚至可以是其他數據結構。
在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基礎-列表、元祖、字典、字符串