python列表学习_Python列表学习

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值