【发布时间】:2016-07-14 15:45:08
【问题描述】:
经过一段时间的思考,我想到了这个概念,几天前我已经完成了。
在 Python 中,如果我做了 x=y,那么 x 和 y 将自动指向相同的对象引用位置,但有什么方法可以改变 y 引用位置,但如果 x 具有相同的值。
例如:
x=100
y=x
现在 x 和 y 共享值 100 的相同对象引用位置,但我希望 y 具有不同的位置。
编辑:我正在尝试做的事情
l1=[1,2,3,4]
l2=l1
i=0
j=len(l1)-1
while j >= 0 :
l1[i]=l2[j]
i=i+1
j=j-1
print("L1=",l1,"L2",l2,"i=",i,"j=",j)
我得到的结果
L1= [4, 2, 3, 4] L2 [4, 2, 3, 4] i= 1 j= 2
L1= [4, 3, 3, 4] L2 [4, 3, 3, 4] i= 2 j= 1
L1= [4, 3, 3, 4] L2 [4, 3, 3, 4] i= 3 j= 0
L1= [4, 3, 3, 4] L2 [4, 3, 3, 4] i= 4 j= -1
谢谢。
【问题讨论】:
-
您无法可靠地实现这一目标。该值可能例如被拘留,系统试图避免创建多个实例。你想达到什么目的?
-
@UlrichEckhardt 我正在尝试通过迭代实现列表交换,然后我失败了。
-
仍不清楚。举个例子。换句话说:你肯定不需要这个,一定是你做错了什么。
-
@Selcuk 我的意图不同。不过谢谢。
-
@Raja 链接的答案表明,在缓存 -5 到 256 之间的整数时,它们不能有不同的内存位置。您的问题与整数缓存无关。当您写
l2=l1时,您只是在复制参考。使用l2=l1[:]或copy.copy(l1)。