Python學習筆記之二:列表、集合、字典

編程語言 Python 網絡爬蟲 Scrapy 開發技術專注者 2017-06-08

上篇文章《Python學習筆記之一:字符串常用操作和格式化高級操作》分享了Python中的字符串常用操作和字符串格式化的部分,本篇文章繼續分享Python中最基礎的部分:列表、集合、字典。

列表

Python列表list,相當於Java中的List。但是Python中的list提供了比Java中更加豐富和簡潔的操作。

Python中定義列表的方式

  1. my_list = []

  2. my_list = list()

分片: my_list[start:end:step]

分片是列表中最基礎最重要的內容。現在假設my_list = [1, 2, "3", True, [5, 6]]。

取my_list中第2到4個元素,如:

my_list[2:4] # 將會返回["3", True],列表第一個元素的下標是0,第二個元素的下標是1...,此處相當於取my_list中第2、3個元素,不包括第4個。

取my_list中第2個元素(包括第二個)後面所有的元素:

my_list[1:] # 即省略掉end參數,即為取第二個元素(包括第二個)和它後面所有的元素,此處返回[2, "3", True, [5, 6]]。

取my_list中最後兩個元素:

my_list[-2:] # start參數為負數,表示該下標從後面開始往前計算,-2表示取倒數第二個元素,end參數為空,表示一直取到列表末尾為止。此處會返回[True, [5, 6]]。

取my_list中不包括最後兩個元素的所有元素:

my_list[:-2] # start參數為空,表示從列表起始位置開始取元素,end參數為-2,表示一直取到倒數第二個參數為止(不包括倒數第二個參數),此處會返回[1, 2, "3"]。

取my_list中第2到第5個元素,不包括第5個,並且,每隔一個元素取一個:

my_list[1:5:2] # 此處需要每隔一個元素取一個,所以需要設置第三個參數step,step表示步長,默認為1,即每個元素都會取到。step設為2,表示每兩個元素取第一個,即每隔一個元素取一個。此處會返回[2, True]。

那麼,請問my_list=[1, 2, "3", True, [5, 6]]:

my_list[-2:-5]會返回什麼?

my_list[-3:1]呢?

列表末尾添加元素

my_list.append("7") # 這樣就往my_list後面添加了"7"這個元素

列表插入元素

my_list.insert(3, "哈哈") # 這樣,就往my_list中索引為3的位置插入了"哈哈"。原來my_list中索引為3和3後面的那些元素全部往後移一位。

append()是往列表後面添加元素,那麼,要往列表前面添加元素呢(Python未直接提供這樣的函數)?該怎麼實現?

my_list[2:2] = [2, 3, 4] # 把my_list中索引為2(包含)到索引2(不包含)的部分設置為[2, 3, 4],即往my_list中索引為2的地方插入[2, 3, 4]這三個元素,原my_list中索引為2和2後面的那些元素全部往後移一位。

字符串轉列表

使用list()函數:

my_list = list("abcdefg") # my_list將會變為["a", "b", "c", "d", "e", "f", "g"]

刪除列表中元素

del my_list[2] # 刪除my_list中索引為2的元素,即刪除第三個元素。

my_list.remove(2) # 刪除my_list中值為2的元素。

my_list.pop() # 刪除並返回my_list中最後一個元素。

my_list[2:3] = [] # 把索引為2(包含)到3(不包含)的部分設置為空列表,即刪除索引為2的元素。

Python學習筆記之二:列表、集合、字典

集合(集合比較簡單,不再細講)

s = set() # 創建一個空集合。

s = {"1", "2", "3", 4, True} # 創建一個多元素的集合。

s.issubset(t) # 判斷s是否為t的子集。

s.issuperset(t) # 判斷s是否為t的超集。

s.union(t) # 返回在s與t的並集。

s.intersection(t) # 返回在s與t的交集。

s.difference(t) # 返回在s中但是不在t中的元素集合。

s.symmetric_difference(t) # 返回單獨出現在s中或者t中的所有元素的集合。

s.copy() # 返回s的淺拷貝。

s.update(t) # 把t集合中的元素添加到s中,並返回s。

s.intersection_update(t) # s中只保留s與t的交集,並返回s。

s.difference_update(t) # s中移除出現在t中的元素,並返回s。

s.symmetric_difference_update(t) # s中只保留單獨出現在s中或t中的元素,並返回s。

s.add(x) # 往s中添加元素x。

s.remove(x) # s中移除元素x,如果x不存在會拋出KeyError異常。

s.discard(x) # 如果元素x存在於s中,移除x。

s.pop() # 從s中任意彈出一個元素返回,若s為空則拋出KeyError異常。

s.clear() # 清空s。

判斷一個元素是否在集合中:

if "haha" in s:

print("haha is in s")

Python學習筆記之二:列表、集合、字典

字典

創建一個字典:

d = {'x': 1, 'y': 2, '2': 3}

遍歷字典中的元素

for key in d:

print key, d[key]

或者:

for key, value in d.items():

print key, value

或者:

for key, value in d.iteritems():

print key, value

遍歷字典key或value

d.keys() # 返回key組成的list。

d.values() # 返回value組成的list。

查看字典中有多少key、value對

len(d) # 返回d中key-value映射的數量。

獲取key對應的value值

d["key"] # 獲取key對應的value值,如果d中沒有該key,則會拋出KeyError異常。

d.get(key[, default]) # 從d中獲取key的value,若無該key則返回default參數的值,default默認為None。

d.pop(key[, default]) # 從d中刪除key並返回key的value,若無該key則返回default參數的值,default默認為None。

設置key對應的value值

d["key"] = "value" # 在d中設置key-value。如果d中本來就包含該key,那麼該key對應的value會被覆蓋。

d.setdefault(key[, default]) # 如果d中包含key,則返回key的value,否則,把key的value設置成default參數的值,然後返回default參數值,default默認為None。

判斷一個元素是否在d中:

if "haha" in d:

print("haha is in d")

更多文章

  1. Python學習筆記之一:字符串常用操作和格式化高級操作

  2. Python網絡爬蟲:空姐網、糗百、xxx結果圖與源碼

  3. Python網絡爬蟲requests、bs4爬取空姐網圖片

  4. Python爬蟲框架Scrapy架構和爬取糗事百科段子結果

  5. Python爬蟲框架Scrapy之爬取糗事百科大量段子數據

  6. Python爬蟲框架之Scrapy詳解

Python學習筆記之二:列表、集合、字典

相關推薦

推薦中...