Python實現列表拼接和去重的三種方式
列表拼接三種方式
列表拼接主要有以下三種方式:
- 最簡單的使用“+”;
- 使用切片賦值的方法;
- 使用列表自帶的extend方法
方式一:簡簡單單的“+”
>>> list1 = [1,2,3] >>> list2 = [4,5,6] >>> id(list1) 4408465160 >>> id(list2) 4408325512 >>> list1 = list1 + list2 >>> list1 [1, 2, 3, 4, 5, 6] >>> id(list1) 4408504776
此方法易於理解,但你會發現其實list1已經不是原來那個list1瞭,list1的id值已經發生改變。
方法二:切片賦值
在這裡,我們發現使用切片賦值的拼接就地執行,即它會修改原來的列表,但易讀性不高
>>> list1 = [1,2,3] >>> list2 = [4,5,6] >>> id(list1) 4408465160 >>> id(list2) 4408504776 >>> list1[len(list1):len(list1)] = list2 >>> list1 [1, 2, 3, 4, 5, 6] >>> id(list1) 4408465160
方式三:列表自帶的extend()
>>> list1 = [1,2,3] >>> list2 = [4,5,6] >>> id(list1) 4408325512 >>> list1.extend(list2) >>> list1 [1, 2, 3, 4, 5, 6] >>> id(list1) 4408325512
這裡,你會發現列表自帶的extend()也是就地執行,即它會修改原來的列表,直接在原來的列表後面拼接新列表。
綜合上面三種方式,第一種的使用“+”拼接需要易於理解,但卻不是就地執行,而是新開辟一塊空間來存放新列表;第二種比較難於理解;還是Python列表自帶的extend()拼接列表函數較為友好。
列表去重的三種方式
例如有以下一個列表:需要你進行去重,你能想到哪些方法呢?
num_list = [1,8,9,1,2,3,4,6,5,7,10,5,6,8,3,4]
利用集合set的特性
第一種方法(大傢第一個都會想到的吧):利用集合set的特性
集合set特性:元素不能重復
>>> num_list = [1,8,9,1,2,3,4,6,5,7,10,5,6,8,3,4] >>> new_list = list(set(num_list)) >>> new_list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
利用字典key的不可重復屬性
第二張方法(與集合擁有相同特性的):那麼就是字典的鍵啦
先介紹一下函數dict.fromkeys(序列,設置鍵對應的值),返回一個由序列的元素作為鍵,設置的值作為所有鍵的值的字典,值省略的話所有鍵的值將默認為None;如果設置瞭值的話所有的鍵將會賦予同一個值,看例子:
>>> dict1 = dict.fromkeys([1,2,3,4]) >>> dict1 {1: None, 2: None, 3: None, 4: None} >>> dict1 = dict.fromkeys([1,2,3,4],5) >>> dict1 {1: 5, 2: 5, 3: 5, 4: 5}
那麼正式使用字典鍵的特性進行去重,看例子:
>>> num_list = [1,8,9,1,2,3,4,6,5,7,10,5,6,8,3,4] >>> num_dict = dict.fromkeys(num_list) >>> num_dict {1: None, 8: None, 9: None, 2: None, 3: None, 4: None, 6: None, 5: None, 7: None, 10: None} >>> new_list = list(num_dict.keys()) >>> new_list [1, 8, 9, 2, 3, 4, 6, 5, 7, 10]
利用index()獲取到的是第一次出現的索引
第三種方式:利用index()獲取到的是第一次出現的索引
通過判斷列表中值第一次出現的索引值與遍歷的計數器的遊標cursor值是否相等,相等的話則是第一次出現,否則是重復出現。看例子:
>>> num_list = [1,8,9,1,2,3,4,6,5,7,10,5,6,8,3,4] >>> new_list = [] >>> cursor=0 >>> while cursor < len(num_list): ... if num_list.index(num_list[cursor]) == cursor: ... new_list.append(num_list[cursor]) ... cursor += 1 ... >>> new_list [1, 8, 9, 2, 3, 4, 6, 5, 7, 10]
到此這篇關於Python實現列表拼接和去重的三種方式的文章就介紹到這瞭,更多相關Python列表拼接和去重內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python基礎之數據結構詳解
- python進階從青銅到王者一定會用上的Python技巧
- python數據類型的詳細分析(附示例代碼)
- Python 列表的基本操作介紹
- Python 列表(List)的底層實現原理分析