使用切片/对象重新分配来更改一维元组

时间:2017-09-07 16:54:02

标签: python-3.x tuples

我知道元组是不可变对象,但是,我知道元组支持索引和切片。因此,如果我将一个元组分配给一个变量,我可以将该变量重新分配给一个新的元组对象并更改所需索引位置的值。

当我尝试使用索引切片执行此操作时,我将返回包含多个元组的元组。我理解为什么会发生这种情况,因为我正在通过逗号分隔原始元组的切片,但是我无法弄清楚如何(如果可能的话)我可以返回一个单元组,其中单个元素在使用更大的元素时会发生变化数据集。

示例:

someNumbers = tuple(i for i in range(0, 20))
print(someNumbers)
someNumbers = someNumbers[:10], 2000, someNumbers[11:]
print(someNumbers)

输出以下内容:

(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
((0, 1, 2, 3, 4, 5, 6, 7, 8, 9), 2000, (11, 12, 13, 14, 15, 16, 17, 18, 19))

我可以返回一维元组并仅更改所需的索引值吗?

2 个答案:

答案 0 :(得分:1)

使用concatenation

someNumbers = someNumbers[:10] + (2000,) + someNumbers[11:]

答案 1 :(得分:0)

您可以使用元组连接:

someNumbers = tuple(i for i in range(0, 20))
print(someNumbers)
# (2000, ) to differentiate it from (2000) which is a number
someNumbers = someNumbers[:10]+ (2000,) + someNumbers[11:]
print(someNumbers)

输出:

(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2000, 11, 12, 13, 14, 15, 16, 17, 18, 19)