今天学习的是python中列表的使用,话不多说,直接上代码。

#-------------------列表学习----------------------
names = ["ding","wang","li","kang"]
names.append("mo")  #在最后添加
names.insert(1,"haisheng")  #在指定位置插入
print(names[-1]) #-1代表列表的最后一个元素
print(names[1])  #输出打一个位置元素
print(names[1:3]) #输出第1,2个元素,不包括第三个元素,这是顾首不顾尾
print(len(names)) #len函数求列表的数据个数
print(names.count("mo")) #统计mo名字在列表中有几个
names[1]="haishengding" #修改元素的方式
print(names)
del names[3]  #删除第三个元素
print(names)
names.pop() #pop函数默认删除最后一个
print(names)
names.pop(0)  #pop函数可以带参数,删除指定位置的数据
print(names)
names.remove("wang")  #remove函数删除列表指定元素
print(names)
new_names=["zhoa","chen","mei"]
names.extend(new_names)  #用extend函数把new_names列表加入names
print(names)
names2 = names.copy()  #copy函数的使用,这里直接拷贝一个数组
print(names2)
names.sort()    #sort函数,排序是按照ASCII码
print(names)
names2.reverse()  #reverse是反转列表元素
print(names2)
print(names.index("haishengding"))   #index函数用来输出列表元素的下标,如果元素有多个,这里返回的是第一个元素下标

#----------元组学习---------
#元组跟列表一样用来存数据,区别是一旦创建就不能更改元素,一些函数使用方法一样,读者可以自己试一下

names3 = ("dingding","xiaoming","mingren")
print(len(names3))
print(names3.count("mingren"))
print(names3.index("dingding"))

关于copy方法,这里我还要说一点好玩的,我们继续写代码:



names_copy = names.copy()
print(names)
print(names_copy) #这样保证了names和names_copy里面的元素一样
names[4] = "zhao"
print(names)
print(names_copy)
#但是假如列表里面还有列表,我们在用copy函数时,如
names.insert(1,["gao","zhi","yong"])
print(names)
names_copy = names.copy()
#如果我想将“gao”改成“GAO”,我可以这样
names[1][0] = "GAO"
names[4] = "mo"
print(names)
print(names_copy)  #这时我们会惊讶的发现我们虽然改动的是names[1][0],但是names_copy里面的元素也改变了
#而之前我们修改names[4]时,names_copy里面的元素却没有改变。这是怎么一回事??



这里我们可以在内存中理解,列表元素["gao","zhi","yong"]在names[2]中存放的是指向这个元素的地址,我们copy时,copy的是地址,所以在names_copy中我们copy得到的names[1]这个位置地址与names_copy[1]这个位置地址一样,只是改变的是地址里面确定的值。我们可以理解这种现象为浅copy,有没有方法把“mo”也改了那?当然我们可以

names_copy2 = copy.deepcopy(names)
print(names_copy2)

使用deepcopy,注意要在前面引入模块

import copy

这时的names_copy2中的内容就与names中的内容完全一样了。