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的用处在于,比方说有两个人共享一张银行卡,如果里面存款变动了,那么两个人的银行卡信息随之做同种改变,即联合账号。

 

posted @ 2019-05-11 12:46  LBC不认输  阅读(177)  评论(0编辑  收藏  举报