List 存储的是一组有序序列的值。

内存分配方式:

类似于C++中vector,首先分配一段空间,当分配空间使用完后,将重新开辟一块更大的空间,将原有数据拷贝到新开辟的空间后,释放原有空间。

List 存储方式:

每一个存储单元(每一个元素)存储的是值得引用地址,所以可以存储任意类型。

 

性能特点:

(1)由于采用动态数组方式存储,存储空间永远大于实际存储得元素,占用空间相对tupple或者array多。

(2)由于存储得是值域得引用,故每次读写先根据下标找到值域的地址,在进行数据的访问,读写速度相比array慢。

特性:

(1)可动态修改

(2)支持切片操作

(3)支持算数运算(+, *)

(4)支持范围运算(in, not in)

(5)可循环迭代

(6)当链表为空时,if判断为False,非空为True

定义方式:

L = []          # 定义一个空链表
L = [1, 2, 3] # 定义一个链表并初始化数据

 

算数运算:

(1)切片操作:

x = [1, 2, 3, 4]
print x[1] # 下标为1的元素值 --> 2
print x[1:3] # 从下标为1开始,到下标为3(不包含)的序列 --> [2, 3]
print x[1:-1] # 从下标为1开始,到倒数第一个(不包含)的序列 --> [2, 3]
print x[1:] # 下标为1后面的所有元素 --> [2, 3, 4]
print x[:-1] # 从投开始到倒数第一个的序列 -->[1, 2, 3]

(2)算数运算

如果链表当前存储空间在相加或者相乘后仍然足够存储追加的元素,则之间追加到当前空间,否则按照(内存分配方式)进行分配。

x = [1, 2]
print id(x) # 地址:45830280
x += [3, 4] # x = [1, 2, 3, 4]
print id(x) # 地址:45830280
x = [1, 2] * 2 # 2次叠加-->[1, 2, 1, 2]

(3)范围运算

if 5 in [1, 2, 3]:
# TODO
pass
if 5 not in [1, 2, 3]:
# TODO
pass

方法列表:

对象方法:

 

   

posted on 2020-08-22 17:06  lwp-boy  阅读(353)  评论(0编辑  收藏  举报