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.append("liu")这就相当oc中addobject的方法,在列表中最后一位添加liu这个元素
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)