1. python中的list
list是一個函數,將參數強制轉換成列表
list((1,4,7)) 對元組(1,4,7)使用list函數就返回列表[1,4,7]
map(list,zip(*a))表示對zip(*a)的每一個單位都執行list函數
而且這在python 2.6.6中執行正常,執行效果如下
>>> a=[[1,2,3],[4,5,6],[7,8,9]]
>>> zip(*a)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> map(list,zip(*a))
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
2. python 列表操作
list1=[1,2,3,4,5,6,6,6,7,8,9]
newlist=[Trueifi>3andi<5elseFalseforiinlist1]
3. python內置數據類型列表list和字典dict的性能
我們來討論下python的兩種最重要的內置數據類型列表list和字典dict上,各種操作的復雜度。
list列表數據類型常用操作性能:
1、按索引取值和賦值(v=a[i],a[i]=v)
由於列表的隨機訪問特性,這兩個操作執行時間與列表大小無關,均為O(1)
2、列表的曾長,可以選擇append()和_add_() "+"
list.append(v)的執行時間O(1)
list = list + [v],執行時間是O(n+k),因為新增了一個新的列表,其中k是被加的列表長度
舉例:4種生成前n個整數列表的方法
如圖:
我們可以計算一下這四個函數的耗時,如下
執行結果:
我們可以看到,4種方法運行時間差別很大,test1使用列表連接最慢,而test4使用list range最快,速度相差近200倍。
如下圖,我們總結下list基本操作的性能如何:
上圖可知pop()從列表末尾移除元素O(1),但是pop(i)從列表中間移除元素要O(n),為什麼呢?
因為從中部移除元素,要把移除元素後面的元素全部向前挪一位,才保證了列表按索引取值和賦值很快,達到O(1)。
dict數據類型:
字典和列表不同,dict根據key找到value,而list根據index。
字典最常用的取值get和賦值set,其性能為O(1),而contain(in)操作判斷字典是否存在某個key,其性能也是O(1)
list和dict的in操作對比:
設計一個性能試驗,驗證list中檢索一個值,對比dict中檢索一個值的耗時對比。如下程序:
如果如下:
可見list的in操作復雜度為O(n)
PS:大家可以去python官方的演算法復雜度網站看看:
https://wiki.python.org/moin/TimeComplexity
4. python中list添加append元素有順序嗎
有
List 是 Python 中常用的數據類型,它一個有序集合,即其中的元素始終保持著初始時的定義的順序(除非你對它們進行排序或其他修改操作)。
在Python中,向List添加元素,方法有如下4種方法(append(),extend(),insert(), +加號)
1. append() 追加單個元素到List的尾部,只接受一個參數,參數可以是任何數據類型,被追加的元素在List中保持著原結構類型。
此元素如果是一個list,那麼這個list將作為一個整體進行追加,注意append()和extend()的區別。
復制代碼代碼如下:
>>> list1=['a','b']
>>> list1.append('c')
>>> list1
['a', 'b', 'c']
2. extend() 將一個列表中每個元素分別添加到另一個列表中,只接受一個參數;extend()相當於是將list B 連接到list A上。
復制代碼代碼如下:
>>> list1
['a', 'b', 'c']
>>> list1.extend('d')
>>> list1
['a', 'b', 'c', 'd']
3. insert() 將一個元素插入到列表中,但其參數有兩個(如insert(1,」g」)),第一個參數是索引點,即插入的位置,第二個參數是插入的元素。
復制代碼代碼如下:
>>> list1
['a', 'b', 'c', 'd']
>>> list1.insert(1,'x')
>>> list1
['a', 'x', 'b', 'c', 'd']
4. + 加號,將兩個list相加,會返回到一個新的list對象,注意與前三種的區別。前面三種方法(append, extend, insert)可對列表增加元素的操作,他們沒有返回值,是直接修改了原數據對象。 注意:將兩個list相加,需要創建新的list對象,從而需要消耗額外的內存,特別是當list較大時,盡量不要使用「+」來添加list,而應該盡可能使用List的append()方法。
復制代碼代碼如下:
>>> list1
['a', 'x', 'b', 'c', 'd']
>>> list2=['y','z']
>>> list3=list1+list2
>>> list3
['a', 'x', 'b', 'c', 'd', 'y', 'z']