python各种类型图解_Python - (3)图解列表

@(人工智能编程基础)[Python|图解|列表]

序列类型对象一般都包含一个可遍历的序列,其中并不存储对象本身,而是存储指向对象的引用指针,今天我们来介绍其中最常用序列类型——列表。

比如 a = [1,2,3], [1,2,3]是一个列表对象

a = [1,2,3]

print("a = {}, a的地址:{}, a的类型为:{}, 其中a[0]的地址为:{},a[1]的地址为:{}, a[2]的地址为:{}"

.format(a, id(a),type(a),id(a[0]),id(a[1]),id(a[2])))

运行结果:

a = [1, 2, 3], a的地址:4589867336, a的类型为:, 其中a[0]的地址为:4527752528,a[1]的地址为:4527752560, a[2]的地址为:4527752592

a = [1,2,3]在内存中的大致过程为:

- 在内存中创建了一个长度为3的列表对象,它包含3个引用指针,它的地址为&4589867336,将变量a指向这个列表对象

- 在缓冲池共享区创建数值为1整型对象,地址为&4527752528,列表对象的第一个指针指向它。

- 在缓冲池共享区创建数值为2整型对象,地址为&4527752560,列表对象的第一个指针指向它。

- 在缓冲池共享区创建数值为3整型对象,地址为&4527752592,列表对象的第一个指针指向它。

图解过程如下:

改变是可变类型对象,它的可变体现在两个方面:

- 列表中引用指针指向的对象地址可以改变,

- 列表的长度可以改变。

改变列表的某个值,其实是将列表中的引用指针指向了新的对象,比如a[2] = 300

a[2] = 300 #列表是可变对象,可以修改其中元素指向的对象的地址

print("a = {}, a的地址:{}, a的类型为:{}, 其中a[0]的地址为:{},a[1]的地址为:{}, a[2]的地址为:{}"

.format(a, id(a),type(a),id(a[0]),id(a[1]),id(a[2])))

运行结果:

a = [1, 2, 300], a的地址:4589867336, a的类型为:, 其中a[0]的地址为:4527752528,a[1]的地址为:4527752560, a[2]的地址为:4589924560

过程如下:

- 在内存中生成了一个数值为300的整型对象,它的地址为&4589924560,将列表的第三个索引指针指向这个整型对象。

- 列表对象本身的地址并没有改变&4589867336,它还是上面生成的那个列表对象,不过它的值已经改变了。

如图示:

列表的可变性还体现在长度可变,可增长,也可缩短。

a.append(500) #列表的长度也可以改变

print("a = {}, a的地址:{}, a的类型为:{}, 其中a[0]的地址为:{},a[1]的地址为:{}, a[2]的地址为:{}"

.format(a, id(a),type(a),id(a[0]),id(a[1]),id(a[2])))

运行结果:

a = [1, 2, 300, 500], a的地址:4589867336, a的类型为:, 其中a[0]的地址为:4527752528,a[1]的地址为:4527752560, a[2]的地址为:4589924560

a.append(500) 大致过程:

- 在内存中生成一个数值为500的整型对象

- 列表后面追加了一个引用指针,它指向了上面生成的数值为500的整型对象。

- 列表对象本身的地址并没有改变&4589867336,它还是上面生成的那个列表对象,不过它的长度已经改变了。

如图所示:

总结:

1. 列表是序列类容器类对象,它不存放对象,而是存放指向对象的指针。

2. 这类序列类型还包括元组,集合,字典和字符串。

2. 列表是可变类型对象,它不仅指针可变,长度也可变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值