python数据类型之列表

列表

对于普通的数据类型如整型,浮点型,布尔值等我就不一一列举了,首先我们来看列表:

sequence = [1,2,3,4]    #定义列表,用[]表示,用,分隔
print(sequence)         #输出列表
print(sequence[1])      #输出列表指定值,计算机从0开始计数,故1取得是第二个值
#同时取出多个值
print(sequence[1],sequence[3])  #用于不连续
print(sequence[1:3])    #取连续的值可以切片,切片为左闭右开区间,即取1-3的值,不包含3
print(sequence[-1])     #如果我们想取最后一个值而不知道列表长度
print(sequence[-2:])    #如果要取最后两个,后面不能写-1,应为左闭右开,此时可以省略
print(sequence[:2])     #如果从第一个开始切片,0也可以省略
print(sequence[0:-1:2]) #间隔切片,参数分别为起始点,结束点,间隔
print(sequence[::2])    #同上,省略0和-1
#增
sequence.append(5)      #追加
sequence.insert(1,1.5)  #插入,第一个参数为index,第二个为value
#改
sequence[0] = 2
#删
sequence.remove(2)  #根据value删除,若有多个,只删除第一个
del sequence[0]     #删除指定index的数据
sequence.pop()      #默认删除最后一个
sequence.pop(0)     #删除指定index
#查
print(sequence.index(3))    #输出第一个value为3的index
print(sequence.count(3))    #统计列表中value为3的个数
#其他方法
sequence.reverse()          #将列表倒序
sequence.sort()             #将列表排序,若为字符串,则按ascii排序
sequence2 = ["jack","rose"]
sequence.extend(sequence2)  #将其他列表添加到该列表后
sequence3 = sequence.copy() #返回列表的备份

讲到字符串拷贝这里再给大家拓展一点,请看如下代码:

mylist = ["jack","rose",[1,2,3,4]]
mylist1 = mylist.copy()
#此处修改mylist的值,mylist1是否会改变呢?
mylist[0] = "JACK"
mylist[2][1] = "TWO"
print(mylist,mylist1)

大家猜到结果了吗?
[‘JACK’, ‘rose’, [1, ‘TWO’, 3, 4]]
[‘jack’, ‘rose’, [1, ‘TWO’, 3, 4]]
我们发现,jack没变,但是2变成了TWO,这是为什么呢?
因为list的第三个元素是列表,外层列表保存的是他的地址,拷贝的时候也只是把地址拷贝过去,而修改的值是该地址指向的值,故两个都变了;而为什么jack没有变呢?虽然列表也是保存的jack的地址,但是当对第一个元素重新赋值时,并不是改变的jack这个地址中的值,因为字符串时不可变对象,而是重新创建了一个JACK对象,并将其地址保存在了mylist中,但是mylist1中依旧保存的是jack的地址,故没变。
以上就是我对浅拷贝的拙见了,那么如果我想拷贝之后完全独立该怎么办呢?

import copy
mylist = ["jack","rose",[1,2,3,4]]
mylist1 = copy.deepcopy(mylist)
#此处修改mylist的值,mylist1是否会改变呢?
mylist[0] = "JACK"
mylist[2][1] = "TWO"
print(mylist,mylist1)

结果如下:
[‘JACK’, ‘rose’, [1, ‘TWO’, 3, 4]]
[‘jack’, ‘rose’, [1, 2, 3, 4]]
这就完成了深拷贝,我们修改原列表不会在影响到拷贝的列表了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值