Python列表常用操作,浅拷贝及深拷贝

先看一些基本的操作

names = ["4ZhangYang", "#!Guyun","xXiangPeng",["alex","jack"],"ChenRonghua","XuLiangchen"]

#打印第一个以及第三个元素
print(names[0],names[2])

切片操作:

print(names[1:3]) #打印下标为1到下标为2的元素内容,第3个元素不会被打印,因为python的切片操作是顾头不顾尾的
print(names[-2:]) #打印倒数第2个到结尾的元素内容
print(names[:3]) #相当于print(names[0:3])
print(names[-3:-1]) #打印倒数第3个到倒数第1个元素的内容,因为python读列表时从左到右读取的
print(names[0:-1:2]) #隔一个元素打印
print(names[::2]) #隔一个元素打印
print(names[:]) # 打印全部元素,相当于print(names)

 

列表自带的一些函数操作

#增加
names.append("LeiHaidong") #追加一个元素
names.insert(3,"Xinzhiyu") #在指定下标处插入一个元素
#合并一个列表的内容
names2 = [1,2,3,4]
names.extend(names2)

#
names.remove("ChenRonghua")

#del names[1] =names.pop(1)
del names[1] 
names.pop(1) #如果使用names.pop(),默认弹出最后一个元素,并返回最后一个元素的内容
names.clear()#清空列表
del names2 #删除整个列表

#
names[2] ="XieDi" #直接替代下标为2的元素内容
names.reverse() #元素内容反转
names.sort()#排序

#
print(names.index("XieDi"))
print(names.count("ChenRonghua")) #统计此内容的元素个数

 浅拷贝以及深拷贝

先看浅拷贝

names = ["4ZhangYang", "#!Guyun","xXiangPeng",["alex","jack"],"ChenRonghua","XuLiangchen"]

name2 = names.copy() #相当于copy.copy(names)或者name2 = name[:] 或者 names2 = list(names)
print(names)
print(name2)
names[2] = "向鹏"
names[3][0] ="ALEXANDER"

运行结果:


['4ZhangYang', '#!Guyun', 'xXiangPeng', ['alex', 'jack'], 'ChenRonghua', 'XuLiangchen']
['4ZhangYang', '#!Guyun', 'xXiangPeng', ['alex', 'jack'], 'ChenRonghua', 'XuLiangchen']
['4ZhangYang', '#!Guyun', '向鹏', ['ALEXANDER', 'jack'], 'ChenRonghua', 'XuLiangchen']
['4ZhangYang', '#!Guyun', 'xXiangPeng', ['ALEXANDER', 'jack'], 'ChenRonghua', 'XuLiangchen'] #注意向鹏这一项,names2没有跟着改,而alex这一项全改了

Process finished with exit code 0

.copy()只能进行浅拷贝,复制到第一层,当列表当中还存在列表,就只会直接引用被复制元素的列表地址。

深拷贝

import copy
names = ["4ZhangYang", "#!Guyun","xXiangPeng",["alex","jack"],"ChenRonghua","XuLiangchen"]
name2 = copy.deepcopy(names) #深拷贝
print(names)
print(name2)
names[2] = "向鹏"
names[3][0] ="ALEXANDER"
print(names)
print(name2)

运行结果:

['4ZhangYang', '#!Guyun', 'xXiangPeng', ['alex', 'jack'], 'ChenRonghua', 'XuLiangchen']
['4ZhangYang', '#!Guyun', 'xXiangPeng', ['alex', 'jack'], 'ChenRonghua', 'XuLiangchen']
['4ZhangYang', '#!Guyun', '向鹏', ['ALEXANDER', 'jack'], 'ChenRonghua', 'XuLiangchen']
['4ZhangYang', '#!Guyun', 'xXiangPeng', ['alex', 'jack'], 'ChenRonghua', 'XuLiangchen']

Process finished with exit code 0

 

遍历列表

for i in names:
    print(i)

 

posted @ 2019-04-21 16:53  RichardLiang  阅读(2603)  评论(0编辑  收藏  举报