今天学习的是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中的内容完全一样了。