pythonlist參數傳遞
① python語句list執行結果
Python語句list(range(1,10,3))執行結果為[1,4,7]。
語法是:range(start,stop[,step])
參數說明:
(1)start:計數從start開始,默認是從0開始。例如range(5)等價於range(0,5);
(2)stop:計數到stop結束,但不包括stop。例如:range(0,5)是[0,1,2,3,4]沒有5;
(3)step:步長,默認為1。例如:range(0,5)等價於range(0,5,1)。
因此,range(1,10,3)的意思是1到10之間的tuple,間隔為3,所以結果是(1,4,7)。
列表(List)是最常用的Python數據類型,它可以作為一個方括弧內的逗號分隔值出現。
所以,list(range(1,10,3))執行結果為[1,4,7]。
(1)pythonlist參數傳遞擴展閱讀
Python列表函數&方法
Python包含以下函數:
1、亂運cmp(list1, list2):比較兩個列表的元素;
2、len(list):列表元素個數;
3、max(list):返回列表元素最大值;
4、min(list):返回列表元素最小值;
5、list(seq):將元組轉換為列表。
Python包含以下方法:
1、list.append(obj):在列表末尾添加新的對象;
2、list.count(obj):統計某個元芹陪鬧素在列表中出現的次數;
3、list.extend(seq):在列表末尾一次性追加另嫌罩一個序列中的多個值(用新列表擴展原來的列表);
4、list.index(obj):從列表中找出某個值第一個匹配項的索引位置;
5、list.insert(index, obj):將對象插入列表;
6、list.pop([index=-1]):移除列表中的一個元素(默認最後一個元素),並且返回該元素的值;
7、list.remove(obj):移除列表中某個值的第一個匹配項;
8、list.reverse():反向列表中元素;
9、list.sort(cmp=None, key=None, reverse=False):對原列表進行排序。
② python中使用socket編程,如何能夠通過UDP傳遞一個列表類型的數據
Python中的 list 或者 dict 都可以轉成JSON字元串來發送,接收後再轉回來。
首先
importjson
然後,把 list 或 dict 轉成 JSON
json_string=json.mps(list_or_dict)
如果你用的是Python3,這里的 json_string 會是 str 類型(即Python2的unicode類型),可能需要編碼一下:
if type(json_string) == six.text_type:
json_string = json_string.encode('UTF-8')
用socket發送過去,例如
s.sendto(json_string,address)
對方用socket接收,例如
json_string,addr=s.recvfrom(2048)
把JSON轉成 list 或 dict
list_or_dict=json.loads(json_string)
下面是個完整的例子:
client.py
#!/usr/bin/envpython
#-*-coding:UTF-8-*-
importsocket
importjson
importsix
address=('127.0.0.1',31500)
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
mylist=[1,2,3,4,5,6,7,8,9,10]
json_string=json.mps(mylist)
iftype(json_string)==six.text_type:
json_string=json_string.encode('UTF-8')
s.sendto(json_string,address)
s.close()
server.py
#!/usr/bin/envpython
#-*-coding:UTF-8-*-
importsocket
importjson
address=('127.0.0.1',31500)
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(address)
json_string,addr=s.recvfrom(2048)
mylist=json.loads(json_string)
print(mylist)
s.close()
請先運行server.py,再運行client.py
③ python list[3::-1]是什麼意思
「python list[3::-1]」的意思是:從位置3反向截取list中的數組。
list參數分別是截取位置、截取方式。3代表從list第三個位置開始截取,-1代表反向截取。
在編程語言中,List是雙向串列連接,用於管理線性列中的對象集合。 list的功能是在集合中的任何位置添加或刪除元素都是快速的,但不支持隨機訪問。
list是類庫提供的眾多容器(container)之一,除此之外還有vector、set、map、…等等。List被實現為模板(即泛型),並且可以處理任何類型的變數,包括用戶定義的數據類型。
(3)pythonlist參數傳遞擴展閱讀:
list是一個雙向循環鏈表,每個元素都知道前一個元素和下一個元素。
在STL中,list(如vector)是常用容器,與vector不同,list不支持對元素的任意訪問。 list中提供的成員函數類似於vector,但是list提供了對表的第一個元素push_front和pop_front的操作,這些操作在vector中不可用。
與vector不同,list迭代器不會失敗。 與vector不同,vector保留了備份空間,當超過容量限制時,將重新分配所有內存,從而導致迭代器失敗。 List沒有備份空間的概念,請求元素進行空間的進出,因此其迭代器不會失敗。
④ python 列表: 例:a = [1,2,3,4] 使用a[4]會報錯,使用a[4:],為什麼不出錯呢
a[0]=1
a[1]=2
a[2]=3
a[3]=4
a[4]不存在,自然報錯。
而a[4:],這是片段操作符,用於子list的提取。即從a[4](也就是第五個)右數到最後,這是不存在的,則返回NULL子列表,自然不報錯
⑤ python中,如何將list中的各個值快速賦值給變數
a, b, c, d = list1
這種方式只有當左邊的操作數個數和list1長度相同時,才可以這么做,不然不報錯.
我們假設我們有一個list對象List,它的長度足夠長,想把它從下標i開始的k個元素賦給k個元素,可以這么做:
v1, v2, v3, ..., vk = List[i : i + k] #默認i=0, k=len(List)
其實你的問題相當於:
a, b, c, d = list1[0 : 4]
⑥ 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部分沒有進行翻譯
核心部分