由于元组不能修改,我们可以考虑使用切片,并根据给定的变量位置,创建所需要的新元组
t = (1,2,3,4,5,6,7,8,9)
pos = 5
t2 = t[:pos-1] + t[pos:pos+1] + t[pos-1:pos] + t[pos+1:]
print(t2)
假设我们希望把元组中对应 pos 位置的元素与其前一个元素的位置对调,利用切片实现的代码如图所示
解释:
t[:pos-1]
将复制元组中下标从 0 到 pos-2 的元素t[pos:pos+1]
将复制元组中下标为 pos 的元素;
注意,此处不能直接使用t[pos]
,因为t[pos]
将被识别为 int 类型变量,而非元组类型变量,将会报错TypeError: can only concatenate tuple (not "int") to tuple
;
也不能直接尝试将其修改为tuple( t[pos] )
原因是t[pos]
已被识别为 int 类型变量,并非可迭代数据,将报错TypeError: 'int' object is not iterable
;t[pos-1:pos]
意义同上,将复制元组中下标为 pos-1 的元素;t[pos+1:]
将复制元组中下标从 pos+1 到尾部的所有元素