博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Python 列表、元组初识

Posted on 2018-05-11 11:38  TigerAt  阅读(122)  评论(0)    收藏  举报

列表:一种长用的数据类型,可以对数据实现最方便的存储及增、删、改、查等操作

定义列表:

names = ["Tiger At","Hu Yong","Guo Shanshan"]
View Code

 增加列表中的元素:

#追加
names.append("Li Yang")
#插入
names.insert(2,"Guo Luo")
View Code

删除列表中的元素:

#delete
names.remove("Li Yang")
del names[2]  #删除整个列表  del names
names.pop()#缺省删除最后一个元素,如若添加index数值则实现效果与del names[index]一致
View Code

修改列表中的元素:

1 names[2] = "33"
View Code

查找列表中的元素:

 1 #直接通过元素下标取值
 2 names[0]
 3 names[2]
 4 
 5 #切片,取头不取尾,切片顺序始终是从左往右取
 6 names[1:2]
 7 names[-1]  #表示取列表的最后一个值,为了让大家好理解点就是:从左往右的编号是:0,1,2,... 从右往左的编号为:-1,-2,-3,...
 8 names[-3:-1]#由于切片始终顺序是从左往右切片,因此当我们从右往左给元素编号完成后,必须将最左边的编号写在前面
 9 
10 names[-3:]#取出从倒数第三个的值至最后一个元素的值
11 names[:-1]#从第0个元素开始取值
12 names[::2]#2表示每隔一个取一个
View Code

列表的扩展、排序等操作

1 names.index("Guo Shanshan")#获取元素下标
2 names.count("Guo Shanshan")#统计元素数量
3 names.reverse()#反转列表
4 names.sort()#列表排序
5 names.extend(names2)#列表扩展
View Code

注:对于列表排序的优先级是:特殊字符>数字>大写英文字母>小写英文字母  参照ASCII码规则来的

 列表的拷贝

1 import copy  #导入copy模块
2 names = ["Tiger At","Hu Yong",["Jerry","Jack"],"Guo Shanshan"]
3 
4 names2 = copy.deepcopy(names) #完全拷贝
5 
6 names2 = names.copy() #浅拷贝,只拷贝一层
7 names2= copy.copy(names)#与names.copy实现效果一致
View Code

注:赋值与copy的区别

除过数字和字符串外

赋值相当于将存储的数据类型的存储地址直接传递给另外一个变量使用,因此,当任意一个变量修改了数据的值时,另外一个变量会随之改变,因为它们使用的是同一块的存储空间。

copy中分为“deepcopy”和“copy”

deepcopy是直接将一个变量复制了一份,存储到另外一个变量当中去,两个变量的存储空间是相互独立的;

copy是将一个变量(如列表类型)的第一层数据信息复制一份,存储到另外一个变量当中去,但当此列表中有子列表时,则赋予新变量的字列表的信息时字列表的存储地址。因此,子列表中数值发生变化时,所有变量的字列表值也会随之而变,因此又将copy俗称为“浅”copy。

补充说明一下,浅copy的实现方式有4种:

1.names2 = names.copy()

2.names2 = copy.copy(names)

3.names2 = names[:]   #注意不要和赋值搞混:names2 = names

4.names2 = list(names)

 

元组

元组也叫只读列表,顾名思义,只能进行查询,不能进行增、删、改

 

1 names2 = ("Tiger At","Guo Shanshan","Tiger At") #定义元组
2 names2.count("Tiger At")#统计数量
3 names2.index("Guo Shanshan")#读取下标
4 names2[1:-1]#切片
View Code