Python元组和extend()方法

Python元组和extend()方法,python,Python,我知道元组是不可变的对象。因此,我无法更改元组的元素(除非创建新元组)。但是,如果我有: my_tuple=(1,2[3,4]) 然后我尝试仅使用extend()方法修改第三个元素: mytuple[2]。扩展([5,6]) 我看到我的元组现在是(1,2[3,4,5,6]),python不会抛出错误。我知道我修改了一个列表,它是可变的。但是列表在元组中,所以它应该是不可变的。这种行为是否违反了元组的不变性 列表是可变的,元组是不可变的 在上述扩展方法中,您可以修改列表 为了更好地理解这一点: 如

我知道元组是不可变的对象。因此,我无法更改元组的元素(除非创建新元组)。但是,如果我有:

my_tuple=(1,2[3,4])

然后我尝试仅使用extend()方法修改第三个元素:

mytuple[2]。扩展([5,6])


我看到我的元组现在是
(1,2[3,4,5,6])
,python不会抛出错误。我知道我修改了一个列表,它是可变的。但是列表在元组中,所以它应该是不可变的。这种行为是否违反了元组的不变性

列表
是可变的,
元组
是不可变的

在上述扩展方法中,您可以修改
列表

为了更好地理解这一点:

如果你定义一本字典,就像这样:

a={}a[my_tuple]=0

您将得到错误,因为不可变对象,即
元组
,包含一个可变对象,即
列表

因此,字典键不可散列,但如果您定义:

my_tuple=(1,2,3)


然后,
a[my\u tuple]
不会给出错误

您刚刚在元组中修改了list对象。您没有以任何方式更改元组。不可变是指您无法修改元组自身的属性:长度,但其中的对象获得自己的属性短回答:元组是不可变的,但其元素不一定要添加标点符号-这很难理解。使用也会有很大帮助。顺便说一句,欢迎来到SO!如果需要更多建议,请查看和。此外,哈希性与可变性密切相关,但与可变性不同。如果你解释了它们是如何连接的,这会有所帮助。如果我们有一个列表,那么更好的理解就是为什么python中需要元组,你可以在这两个列表中存储异构数据。因此,python中的列表和元组在字典中有不同的用法,您不能将列表定义为键,因为它可以修改,您还知道字典存储键是散列,列表不能散列,因为它可以修改,但元组可以用作键,因为它是不可变的,即它不能更改