python学习DAY3(列表)
今天所学知识主要是列表,其大概操作以及含义和C\C++等编程语言的数组很类似,记住一些常用的函数格式就行了
一:列表
names=["aaa","bbb","ccc","ddd"] //类似于C++中的数组 print(name) print(names[0]) //取出第一个元素
列表一些较为常用的操作函数
#切片 print(names[1:3]) #注意冒号 '''取出第二个元素和第三个元素!注意,取出元素在原列表的标记类似于数组下标 如果要取出2个数据如'bbb','ccc',则右括号应该写'ccc'的下一个元素'ddd',小记为区间左闭右开''' print(names[-1]) //未知长度情况下取出最后的元素'ddd' print(names[-3:]) //取出后面3个元素,注意:后不填写
#添加数据 1.往列表末尾插入 names.append("eee")
------引申
【 Author:barry allen
names=[("aaa",1)] #子列表
tem=names[0]
name_list=[]
name_list.append(tem) #注意,tem依旧是以("aaa",1)为整体传入到name_list中
print(name_list)
】
2.规定位置插入(位置类似于数组下标)(不可批量插入) 如插入到'bbb’当前位置 names.insert(1,"xxx")
#修改数据 将'ddd'改为xxx names[3]="xxx"
#删除数据 1.删除'xxx' names.remove("xxx") 2.删除指定位置 (1)删除第二个数据'bbb'(下标为1) del names[1] (2) names.pop() #默认是删除最后一个元素 names.pop(1) #删除第二个数据'bbb'(下标为1)
#查找指定元素并返回其下标位置于屏幕 print(names.index("bbb")) ---返回位置加元素print(names[names.index("bbb")])
#输出整个列表并返回其下标
1.for i in names
print(names.index(i),names)
2.for index,data in enumerate(names): #index为下标,data为列表元素
print(index,data)
#统计指定元素个数 print(names.count("bbb"))
#清空 names.clear() print(names)
#反转 names.reverse()
#排序(按ASCll码排序) names.sort()
#合并 names2=["1","2","3","4"] names.extend(names2) #names2合并在names后面,且names不会删除,相当于复制一份自己的资料给names
#删除变量 del names
#元祖 只创建不能修改,即只读列表,操作只有count 和 index两种 test=("aaa","bbb","ccc")#注意!是小括号
#列表循环 for i in names: print(i) #此输出到屏幕上是每一行输出一个元素,而input(names)则是在一行中输出所有元素
#隔断(切片打印)如for循环中的range(0,10,2) print(names[1:3:2]) #从下标为1到3(不包括3)每隔2个元素打印一个 print(names[0:-1:2]) #从开始到结束每隔2个元素打印 print(names[::2]) #省略0和-1的简便写法
#计算列表的长度 print(len(names))
二:子列表以及copy的相关知识(浅、深copy)
#子列表\copy names=["aaa","bbb",["111","222"],"ccc","ddd"] print(names) names2=names.copy() print(names) print(names2) names[3]="xxx" #此时的子列表整体化为names列表的一个元素 #print(names[2][0]) #输出子列表的写法:第一个[]为子列表在列表的位置,第二个[]为想要输出子列表的元素的位置 names2[2][1]="333" print(names) print(names2) import copy names2=names.copy() '''注!两个copy的结果是不一样的,先复制过来,然后names修改非子列表的元素时,names2的元素不会改变。但是修改子列表中的元素时
此时names2的子列表同样会被修改。即:复制时,可以简单比喻为,子列表是一块临界资源,而非子列表的names,names2是两个完全独立的内存互不影响''' names2=copy.deepcopy(names) #完全独立地克隆,但会开辟两个完全独立的内存,即使names修改了names2依旧和修改前的元素一样
#------引申 #3种浅copy的方法 names2=copy.copy(names) names2=names[:] names2=list(names) #浅copy的用处在于,比方说有两个人共享一张银行卡,如果里面存款变动了,那么两个人的银行卡信息随之做同种改变,即联合账号。