python中的列表表示:
python中的列表相當於oc中的陣列,它們都會有增刪改查的方法,這裡就將這兩種語言中的列表和陣列進行對比學習。
首先先來寫組oc中的陣列的表達方式:nsarray *namesarr = [nsarray arraywithobjects,@"zhang",@"wang","li",@"zhao"];這就是oc中陣列的建立方式。
在來寫組python中列表的建立方式 names = ["zhang","wang","li","zhao","qian"] 這就使python中的列表表示方法。
oc中陣列包涵有可變陣列和不可變的陣列,在像陣列中增加刪除乙個元素的時候我們需要用到可變陣列nsmutablearray,但是在python中就沒有這樣的區分。
首先我們來看一下像陣列中增加元素:
oc:nsmutablearray *arr = [nsmutablearray arraywithobjects:@"zhang",@"wang",@"li",@"zhao", nil];
[arr addobject:@"qian"]; 在陣列中最後新增乙個qian的元素
[arr insertobject:@"liu" atindex:1]; 在索引為1的位置新增liu元素
py:names = ["zhang","wang","li","zhao","qian"]
names.insert(1,"liu")相當oc中insertobject的方法 在索引為1的位置新增liu元素
在來看一下刪除:
oc:[arr removeobject:@"wang"]; 移除為wang的元素
[arr removeobjectatindex:2];移除索引為2的元素
[arr removeobjectsinrange:nsmakerange(0, 3)]; 移除從0開始3個單位長度的中的元素
[arr removeallobjects];移除所有元素
[arr removelastobject];移除最後乙個元素
py:names.remove("zhang");移除zhang這個元素
del names[1] 移除索引為1的元素
記下來看下修改陣列中的元素:
oc:[arr setobject:@"sss" atindexedsubscript:1]; 將索引為1的元素修改為sss
[arr replaceobjectatindex:1 withobject:@"sss"];將索引為1的元素修改為sss
py:names[0]="sss"取出索引為0的修改為sss
最後我們再來看一下查:
oc:nsstring *string = arr[0];檢視索引為0的元素
nsstring *string = [arr firstobject];
nsstring *string1 = [arr lastobject];
py:names[0];檢視索引為0的元素
names[1:3] 切邊 他查詢出來的是wang 和 li 為什麼查出來的不是wang li zhao 呢 這裡就是這樣表明顧頭不顧尾,就像當時取出索引為 1,2的元素
當在列表中元素特別多我們想取出python中列表最後乙個元素時我們要這樣表示 names[-1], -1就代表取出最後乙個元素
names[-3:-1] 這就是取出 li 和 zhao 。如果我們想取出-3後面所有元素我們要這樣寫 names[-3:0] 或者[-3:]0可以忽略不寫
總結完增刪改查後剩下的還有一些小點:
names.count("zhang") 列表中有幾個是zhang這個元素的
names.index("zhang") zhang這個元素的索引
names.sort()陣列的排序按照ascllm 特殊字元,數字,大寫字母,小寫字母。
names.reverse() 陣列的反轉
names.extend() 陣列的擴充套件
這裡說一下copy這個方法:
names = ["zhang","li","wang","zhao"]
names2 = names.copy()
names[0] = "張"
這裡輸出 names = ["張","li","wang","zhao"] names2 = ["zhang","li","wang","zhao"]
但是如果出現這樣的形式
names = ["zhang","li","wang","zhao",["liu","ding"]]
names2 = names.copy()
names[0]= "張";
names[4][1] = "六";
在輸出 names = ["張","li","wang","zhao",["六","ding"]] names2= ["zhang","li","wang","zhao",["六","ding"]]
這裡解釋一下copy這裡的copy是一種淺copy它只copy第一層 ["liu","ding"]就相當乙個記憶體位址指向記憶體,修改完成後記憶體中儲存的是「六」,在names2中["liu","ding"]也是個記憶體位址指向這個記憶體,表示出來就是["六","ding"]
如果想要完全copy列表的話需要 import copy
names2 = copy.deepcopy(names)
python列表學習 python列表學習整理
list1 列表 是一種有序的集合,可以隨時新增和刪除其中的元素。list1 lily lucy peter abel 列印列表 print list1 遍歷列表 end 迴圈中不換行print x,end for x in list1 print x 列表個數 print len list1 列表...
python列表學習 Python列表學習
python中的列表表示 python中的列表相當於oc中的陣列,它們都會有增刪改查的方法,這裡就將這兩種語言中的列表和陣列進行對比學習。首先先來寫組oc中的陣列的表達方式 nsarray namesarr nsarray arraywithobjects,zhang wang li zhao 這就...
Python學習 列表
列表由一系列按特定順序排列的元素組成 元素之間沒有任何關係 用 表示列表,並用 號分隔其中的元素 可直接通過該元素的位置和索引訪問 str a b c print str 0 索引從0開始 索引為 1時訪問列表最後乙個元素 直接用索引修改 str 0 d insert loc,value 在索引為l...