python中的list函數
Ⅰ python中list和set的區別
list返回的類型的是列表,set返回的類型是集合,無重復元素
Ⅱ list() <Python 內置函數>
🔨 class list([ iterable ])
該內置函數本質上是 list 類的構造函數,用於創建 list 實例。
如果沒有向 list 函數傳遞任何參數,則會槐橋知創建一個空列表:
如果向 list 函數傳遞一個可迭代對象,則會以 iterable 中的元素來構建一個消梁新列表。新建列表中各個元素的值和順序均與 iterable 中各個元素的值和順序相同。 iterable 可以是序列,也可是支持迭代的容器,還可鉛消以是迭代器對象。
如果 iterable 本身就是一個列表對象, list(iterable) 則會返回該列表對象的淺拷貝,與 iterable[:] 等效:
執行結果:
擴展閱讀:
Ⅲ Python中list的實現
原文鏈接
這篇文章介紹了Python中list是如何實現的。
在Python中list特別有用。讓我們來看下list的內部是如何實現的。
來看下面簡單的程序,在list中添加一些整數並將他們列印出來。
正如你所看到的,list是可以迭代的。
Python中list是用下邊的C語言的結構來表示的。 ob_item 是用來保存元素的指針數組,allocated是 ob_item 預先分配的內存總容量
讓我們來看下當初始化一個空list的時候發生了什麼 L = []
非常重要的是知道list申請內存空間的大小(後文用allocated代替)的大小和list實際存儲元素所佔空間的大小( ob_size )之間的關系, ob_size 的大小和 len(L) 是一樣的,而allocated的大小是在內存中已經申請空間大小。通常你會看到allocated的值要比 ob_size 的值要大。這是為了避免每次有新元素加入list時都要調用realloc進行內存分配。接下來我們會看到更多關於這些的內容。
我們在list中追加一個整數:L.append(1)。發生了什麼?調用了內部的C函數app1()
來讓我們看下 list_resize() , list_resize() 會申請多餘的空間以避免調用多次 list_resize() 函數,list增長的模型是:0, 4, 8, 16, 25, 35, 46, 58, 72, 88, …
開辟了四個內存空間來存放list中的元素,存放的第一個元素是1。你可以從下圖中看到L[0]指向了我們剛剛加進去的元素。虛線的框代表了申請了但是還沒有使用(存儲元素)的內存空間
現在我們在列表的第一個位置插入一個整數5:L.insert(1, 5),看看內部發生了什麼。調用了ins1()
當你彈出list的最後一個元素:L.pop()。調用listpop(), list_resize 在函數listpop()內部被調用,如果這時 ob_size (譯者註:彈出元素後)小於allocated(譯者註:已經申請的內存空間)的一半。這時申請的內存空間將會縮小。
Pop的時間復雜度是O(1)
Python list對象有一個方法可以移除一個指定的元素。調用listremove()。
切開list和刪除元素,調用了 list_ass_slice() (譯者註:在上文slice list between element's slot and element's slot + 1被調用),來看下 list_ass_slice() 是如何工作的。在這里,低位為1 高位為2(譯者註:傳入的參數),我們移除在1號內存空間存儲的數據5
Remove的時間復雜度為O(n)
文中list的sort部分沒有進行翻譯
核心部分
Ⅳ 在python的函數中,如何將列表list的一部分作為函數的參數
後面paraTestList(a[2:])中,括弧裡面的a[2:]命令是指創建了一個包含列表a的一部分的一個副本列表。具體做法是:
def
paraTestList(L):
L[0]='z'
a=['a','b','c','d']
b=a[2:]
paraTestList(b)
print(b)
具體情況如下:
1.Python的函數定義簡單但靈活度大。除了正常定義的必選參數外,還可以使用默認參數、可變參數和關鍵字參數,使得函數定義出來的介面,不但能處理復雜的參數,也可以簡化調用者的代碼。
2.默認參數可以簡化函數的調用,設置默認參數時要注意:一是必選參數在前,默認參數在後,否則Python的解釋器會報錯;二是如何設置默認參數。當函數有多個參數時,把變化大的參數放前面,變化小的參數放後面。變化小的參數就可以作為默認參數。
3.默認參數降低了函數調用的難度,而一旦需要更復雜的調用時,又可以傳遞更多的參數來實現。無論是簡單調用還是復雜調用,函數只需要定義一個。
4.有多個默認參數時,調用的時候,既可以按順序提供默認參數。
4.Python函數在定義的時候,默認參數L的值就被計算出來了,即[],因為默認參數L也是一個變數,它指向對象[],每次調用該函數,如果改變了L的內容,則下次調用時,默認參數的內容就變了,不再是函數定義時的[]了。
Ⅳ python3中list可以作用迭代器么
list是內置的列表類,它有一個構造函數,可以接受一個Iterable(可迭代)的對象作為參數,返回一個列表對象。而map函數正好返回一個可迭代的對象,當然可以通過其返回的對象來創建列表對象。
Ⅵ Python中list,tuple,dict,set的區別和用法
python 中list,tuple,dict,set是最常用的集合類型。
list列表,相當於一個數組,不過list的長度是自動變化的而且列表元素自由的,不必每個元素都是同一種類型。它的簡潔的定義方式是a=[]。有序組合
tuple也是一個組合。不過tuple在定義好之後就不能再變化。它的簡潔的定義方式是a=1,3也可以是a=(1,3).有序組合。
dict是字典類型。也就是鍵值對類型。鍵名不可以重復,並且不可以變化(字元串就符合這個要求,常用字元串作為鍵名)。它的簡潔的定義方式是a={}.無序組合(意思就是你無法按照添加的順序對他進行遍歷)。
set是set類型(不好翻譯,用的也少)。也是一個無序的組合,元素是互斥的,也就不會出現相同的元素。可以把一個序列轉換成無重復元素的set.無序組合。
Ⅶ 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]]