序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。最常见的是列表和元组。
列表与元组最大的区别在于列表可以进行更改,而元组不行。
列表是最常用的python数据类型,列表的数据项不需要具有相同的类型(可插入字符、数字、列表、元组、字典等),可对其进行增删改查的操作。
下面是列表及元组的属性例子。
列表的增加和修改:
1 #!usr/bin/env python 2 #author lhy 3 #列表学习: 4 #列表的增删改查 5 list = ['纸巾','杯子','瓶子','笔记本','手机'] 6 #增加 7 list.append('电脑')#追加到最后面 8 print(list) 9 list.insert(1,'支架')#增加到序列为1的位置 10 print(list) 11 #修改 12 list[1]='高支架' 13 print(list)
增加修改结果如图:
列表的删除操作:
# del list[1] #删除高支架方法一,如果不指定序列号,表示删除整个列表 # list.remove('高支架')#删除高支架方法二 # list.pop(1)##删除高支架方法三,如果括号里面没有值,表示默认为最后一个 # print(list)
列表查询操作:
#查询,python查询顺序是从左到右 print(list)#==list[:]#查询所有列表 print(list[1])#==list[:]#查询指定序列号 print(list[2:6])#==list[:]#查询所有第2-5内容,顾头不顾尾 print(list[-1])#==list[:]#查询所有最后一个 print(list[-3:])#==list[:]#查询倒数3个 print(list.index('手机'))#==list[:]#查询手机所在的序列号
查询结果如图:
列表的其他属性:复制、拼接、计数、倒置、排序:
list1 = list.copy() print(list1) list1.append('测试copy是否影响其他') print(list,list1)#copy之后互相不影响 list.extend(list1)#拼接list 与list1,测试拼接之后被拼接是否不存在 print(list,list1)#拼接之后被拼接的还存在 print(list.count('手机'))#计算对象在列表中的个数 list.reverse()#倒置列表 print(list) list.sort()#python排序机制timesort,机制详见http://www.cnblogs.com/clement-jiao/p/9243066.html print(list)
代码结果如图(由于列表过长,右边只截取了部分):
备注:copy有深浅copy之说:
浅copy只copy一层,变量的每一次初始化,都开辟了一个新的空间,将新内容的地址赋值给变量。
深copy是是每遇到新的内容,就又新开辟一个空间来存该值,简单来说就是完全备份,相互不会影响。
浅copy说明:
list_1 = [1,2,3,[1,2,3]]
list_2 = list_1.copy()#生成一个新的内容为[1,2,3,内存地址(列表[1,2,3])] ,若内存地址(列表[1,2,3])变化,则引用该值的变量都会变化。
深copy说明:
import copy
list_1 = [1,2,3,[1,2,3]]
list_2 =copy.deepcopy(list_1)#生成一个新的内容为[1,2,3,内存地址(列表[1,2,3])] ,再生成一个地址[1,2,3],即完全备份
举例代码如下:
# 浅copy name = [1,2,3,[1,2,3]] #实际上在内存中已经生成了一个新列表,[1,2,3,内存地址],内存地址指[1,2,3]的内存地址 name1 = name.copy() print(name,name1) name[0] = 11 #改变name第一个值改为11 print(name,name1)#仅name变化,name1不变 name[3][0] = 4 #改变列表第一个值为4(内存地址的值) print(name,name1)#都变为4 # 深copy import copy name2 = copy.deepcopy(name) #深copy相当于备份,不会因为修改而变化 name[0] = 1 #改变name第一个值改回为1 print(name,name2)#仅name变化,name1不变 name[3][0] = 5 #改变列表第一个值为5(内存地址的值) print(name,name2)#仅name变化,name1不变
代码执行结果如图:
元组查询同列表
元组学习:元组类似列表,但是不能修改,只能查询同list array_test = ('纸巾','杯子','瓶子','笔记本','手机') print(dir(array_test))#'count', 'index' print(array_test)#查询所有 print(array_test[1])#查询序列为1的位置 print(array_test[2:6])#查询序列为1的位置 print(array_test[-1])#查询序列为最后一个的位置 print(array_test.count('杯子'))#计算元素个数 print(array_test.index('手机')) # del array_test#删除元组 # del array_test[1] #报错TypeError: 'tuple' object doesn't support item deletion print(array_test)
执行代码如图: