这是python 3。
让我们说我有一个元组
tup = (1, 2, 3)
这个元组存储在一个列表中:
a = []
a[0] = tup
我在列表a
上进行迭代。我需要做的是修改tup
的内容。也就是说,我希望更改值,同时将其保留在列表a
中。
这是对的吗?
tmp = list(a[0])
tmp[0] = 0 # Now a[0] = (0, 2, 3)
此外:我知道元组被设计为不可变的,并且列表可能更适合tup
而不是元组。但是,使用append
向列表中添加元素我感到很不舒服:列表存储了固定大小的元素,元组是更好的代表。我宁愿手动将内容添加到列表中,例如tup[0] = blah
而不是tup.append(blah)
答案 0 :(得分:0)
答案很简单。你不能,这样做没有任何意义。列表是可变的,元组不是。如果您希望a
的元素是可变的,请将它们作为列表,例如a = [[1,2,3],...]
。
如果你真的想把它们作为元组,但是改变它们,你可以沿着[0] =(0,)+ a [0] [1:]的行做一些事情。这会在列表中创建一个 new 元组,并且效率低于仅使用列表列表。
此外:我知道元组被设计为不可变的,并且列表可能更适合tup而不是元组。
是。
但是,使用append将元素添加到列表中我感到很不舒服:列表存储了固定大小的元素,元组是更好的代表。
我不确定你的意思。您的意思是a
是固定大小,还是a
的元素是固定大小的?在任何一种情况下,这如何使元组更好?
这里的混淆可能是Python中的列表不是计算机科学意义上的列表;它们实际上是数组。它们是用于检索的O(1),用于设置元素的O(1),并且通常是O(1)用于追加,除非它们需要调整大小。
我宁愿手动添加东西到tup [0] = blah而不是tup.append(blah)
你不能使用元组执行此操作,但您可以使用列表执行 ,并且它们都在O(1)周围。
如果你真的想要固定大小的可变数组,你可以看看numpy,或者你可以初始化设置大小的python列表。