python基础学习(列表和元组)

一、列表和元组(可以放置任意数据类型的有序集合)

1.列表是动态的,长度大小不固定,可以增删改查:

list = [1,'a']

列表中增加数据:list.append('test')

列表中删除数据:del list[1]

列表中查询数据:list[0]

列表中修改数据:list[0] = 'aaaa'

2.元组是静态的,长度大小固定,不可增删改查

tump = ('a',1)

元组之间合并new_tump = tump+(5,)

3.列表和元组都支持负数索引:-1表示最后一个元素,-2表示倒数第二个元素   list[-1]

4.切片操作:list[1:3]   返回列表中的第2,3个元素;tump[1:3]返回数组中的第2,3个元素

5.列表和元组可以随意嵌套:[[1,2],[3,4]]    ((1,2),(3,4))

6.列表通过tuple函数转换成元组:tuple([1,2,3]);元组通过list函数转换成列表:list((1,2,3))

7.常用内置函数

count(item):返回列表/元组中item元素出现的次数

index(item):返回列表/元组中item元素第一次出现的索引

list.reverse():原地倒转列表 /元组  例如list=[1,2,3,5,4]    list.reverse()  print(list)  --->[4,5,3,2,1]

list.sort():对列表/元组进行排序  例如list=[1,2,3,5,4]   list.sort()--->[1, 2, 3, 4, 5]

二、列表和元组存储方式

1.列表是动态的,需要存储指针,来指向对应的元素。由于列表可变,需要额外存储已经分配的长度大小,这样就可以实时追踪列表空间的使用情况,当空间不足时,及时分配额外空间。

l = []

l.__sizeof__() // 空列表的存储空间为40字节

40

l.append(1)

l.__sizeof__()

72 // 加入了元素1之后,列表为其分配了可以存储4个元素的空间 (72 - 40)/8 = 4

l.append(2)

l.__sizeof__()

72 // 由于之前分配了空间,所以加入元素2,列表空间不变

l.append(3)

l.__sizeof__()

72 // 同上

l.append(4)

l.__sizeof__()

72 // 同上

l.append(5)

l.__sizeof__()

104 // 加入元素5之后,列表的空间不足,所以又额外分配了可以存储4个元素的空间

2.元组的大小、长度是固定的。

三、列表和元组的性能:总体来说元组的性能优于列表

1.python后台对静态数据做了资源缓存(resource caching)。垃圾回收机制:如果一些变量不被使用,python会回收它们占用的内存,返还给操作系统,以便其他变量使用。

2.对于元组这类的静态变量,不被使用且占用空间不大,PYTHON会暂时缓存这部分内存,下次再创建同样大小的元组时,python可以不用再向操作系统发出请求,去寻找内存,而是可以直接分配之前缓存的内存空间,这样可以加宽程序的运行速度。

你可能感兴趣的:(python基础学习(列表和元组))