gpt4 book ai didi

Python 从另一个列表中引用列表中的项目

转载 作者:行者123 更新时间:2023-11-28 17:51:41 31 4
gpt4 key购买 nike

我有一个来自另一个列表 (listB) 的变量列表 (listA)。我遇到的问题是 listB 中的项目按值传递给 listA,而不是按引用传递。无论如何,在将其值放入 listA 之后,我是否可以访问 listB 中的对象?

例如:

listB = [1,2,3,4,5]
listA = [listB[0], listB[1]]
listA[0] = 0

这使得 listA 等于 [0, 2],而 listB 保持不变。我想修改 listB,使其变为 [0,2,3,4,5]。

我当然想出了一个解决方案,但它很难看,我想知道是否有一种优雅的方式来做到这一点。

最佳答案

python中的一切都是引用。执行所有这些语句后,listB[1]listA[1] 字面上是同一个对象。 (您可以通过调用 id(listB[1])id(listA[1]) 进行检查。

listA[0]listB[0] 不同的原因仅仅是因为您在该位置放置了不同的引用。

从您的描述来看,您不希望listA 存储对listB 中对象的引用。您想要的是 listA,它是 listB View 。我相信你只有两个选择:

  • 创建一个特殊序列,在内部存储对 listA 的引用,并且其 __getitem____setitem__ 方法执行查找 listA 调用时。

  • 创建特殊的特殊引用类型,其中包含类似于“序列和索引”的内容。将这些引用放入 listA。但是,要通过 listA 修改 listB,您必须调用这些引用对象的某种“get”和“set”成员。

    <

关于Python 从另一个列表中引用列表中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8691326/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com