Python 获取列表的一部分,并在新列表更改时更改原始列表

Python 获取列表的一部分,并在新列表更改时更改原始列表,python,list,python-3.x,Python,List,Python 3.x,我想知道是否有可能这样做: a = [0, 1, 2, 3, 4] b = a[2:] b[0] = -1 print(a) print(b) 得到这个: [0, 1, -1, 3, 4] [-1, 3, 4] [0, 1, 2, 3, 4] [-1, 3, 4] 通常,您会得到以下结果: [0, 1, -1, 3, 4] [-1, 3, 4] [0, 1, 2, 3, 4] [-1, 3, 4] 你的意思是这样的吗?;) 简要说明我对此的理解,如果我犯了任何错误,请告诉我 答案是否定

我想知道是否有可能这样做:

a = [0, 1, 2, 3, 4]
b = a[2:]
b[0] = -1
print(a)
print(b)
得到这个:

[0, 1, -1, 3, 4]
[-1, 3, 4]
[0, 1, 2, 3, 4]
[-1, 3, 4]
通常,您会得到以下结果:

[0, 1, -1, 3, 4]
[-1, 3, 4]
[0, 1, 2, 3, 4]
[-1, 3, 4]

你的意思是这样的吗?;)


简要说明我对此的理解,如果我犯了任何错误,请告诉我

答案是否定的

在python中,变量是链接到对象的标记。 如果我们这样做

a = [0, 1, 2, 3, 4]
b = a
id(a) #199598920
id(b) #199598920
b
只是链接到对象的名称标签名称。它与
a


对你的问题,

a = [0, 1, 2, 3, 4]
id(a) #199598920
a[2:] # [2, 3, 4]
id(a[2:]) #199581576
a[2:][/code>通过创建一个新列表并将第一个列表的一部分复制到新列表中,为我们提供了列表的一部分


在这种情况下,您不能自动更新
b[0]
和list
a
否,使用纯
list
s这是不可能的,因为切片返回切片的浅拷贝

但是,如果您有NumPy,这是可能的,因为
数组的切片返回视图而不是副本:

import numpy as np
a = np.array([0, 1, 2, 3, 4])
b = a[2:]
b[0] = -1
print(a)   # [ 0  1 -1  3  4]
print(b)   # [-1  3  4]

你的问题不清楚。。。您提供了一个代码及其输出,现在,您希望它执行哪些当前不执行的操作?因此您希望
a
b
指向同一列表对象并一起更新?是的,我希望。问题是,当你对原始列表进行切片时,会得到一份副本。我需要在我更改“b”时更改“a”。在打印(a)
之前添加一行,
a[2]=-1
?@降档他显然不想硬编码。他想自动更新,我明白了。不可能,我需要编码。非常感谢。比较原始和切片的
id
不是决定性的,因为即使它们共享底层“数据”,id也必须不同(只是因为一个实例不能表示自身和自身切片)。否则答案很好——我真的很喜欢这些图片!:)谢谢你指出