如何在Python的列表中存储数组引用
我想创建一个由对另一个数组的引用组成的数组。
listB = [1,2,3,4,5]
listA = [listB[0], listB[1]]
print(listA[0]) #returns 1
listB[0] = 0
print(listA[0]) #still returns 1
我该如何修改listA,使第二次打印能够反映更新后的listB?
解决方案
listA = [listB[0], listB[1]]
并不存储对位置 listB[0] 和 listB[1] 的引用。它存储的是当前位于这些位置的对象。
在你的情况下,listA[0] 指向整数对象 1。当你随后执行:
listB[0] = 0
你并没有改变整数对象 1;你只是将 listB 中索引 0 处的元素替换为另一个整数对象 0。
Python没有对列表槽位的直接引用。你需要改为同时存储列表和索引:
listB = [1, 2, 3, 4, 5]
listA = [(listB, 0), (listB, 1)]
print(listA[0][0][listA[0][1]]) # 1
listB[0] = 0
print(listA[0][0][listA[0][1]]) # 0
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。