Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在元组中插入项_Python_Insert_Tuples - Fatal编程技术网

Python 在元组中插入项

Python 在元组中插入项,python,insert,tuples,Python,Insert,Tuples,是的,我知道元组是不可变的,但情况是,我需要在每个元组中插入一个额外的值。其中一个项目是金额,我需要在旁边添加一个不同货币的新项目,如下所示: ('Product', '500.00', '1200.00') 可能吗 谢谢 您可以将其强制转换为列表,插入项,然后将其强制转换回元组 a = ('Product', '500.00', '1200.00') a = list(a) a.insert(3, 'foobar') a = tuple(a) print a >> ('Prod

是的,我知道元组是不可变的,但情况是,我需要在每个元组中插入一个额外的值。其中一个项目是金额,我需要在旁边添加一个不同货币的新项目,如下所示:

('Product', '500.00', '1200.00')
可能吗


谢谢

您可以将其强制转换为列表,插入项,然后将其强制转换回元组

a = ('Product', '500.00', '1200.00')
a = list(a)
a.insert(3, 'foobar')
a = tuple(a)
print a

>> ('Product', '500.00', '1200.00', 'foobar')

由于元组是不可变的,这将产生一个新的元组。把它放回原来的地方

sometuple + (someitem,)

一种方法是将其转换为列表

>>> b=list(mytuple)
>>> b.append("something")
>>> a=tuple(b)

您绝对需要创建一个新的元组——然后可以将名称(或任何引用)从旧元组重新绑定到新元组。
+=
操作符可以提供帮助(如果只有一个对旧元组的引用),例如:


一次完成追加和重新绑定。

对于不添加到元组末尾的情况

>>> a=(1,2,3,5,6)
>>> a=a[:3]+(4,)+a[3:]
>>> a
(1, 2, 3, 4, 5, 6)
>>> 
tup:tuple
位置:插入位置

ele:要插入的元素

您也可以这样简单地编写代码:

T += (new_element,)
输出:

(1,2,3,4,5,6,7)

或者是许多不修改原始元组,而是替换它的方法中的任何一种。这真的不是一个好的解决方案。您可以使用
+=('foobar',)
来获得相同的效果。在Python3.8中,它会给出错误。是的,正如我所了解的那样:P+=不尝试在适当的位置修改引用,它reassigns@Matt,确切地说——但对于元组或字符串,这就是您所能做的(如果您将其应用于列表,它会在适当的位置对其进行修改--“重新分配”这个部分的开销可以忽略不计),总是让我恼火在我看来,应该是一个就地修改。如果你做不到,不要表现得像是在做。尽管我不是Python规范,但很明显,无论我怎么看,它都能完成定义的任务。不管怎样,这并不是一个客观上合理的抱怨——整数是可变的,你可以很容易地+=它们,这同样意味着替换。基本上,语言模型之间的直觉冲突。Oops-整数当然是不可变的。@Steve314,如果你能做
i+=j
,其中
i
是不可变的,因为它是
int
,当它是另一种定义了
+
的类型而不可变时,咆哮着反对能够这样做显然是不合理的。欢迎使用函数式编程。您不是更新元组,而是从旧元组创建新元组。使用
collections.namedtuple
,很明显您正在从旧类型的对象创建新类型的对象。
T += (new_element,)
t = (1,2,3,4,5)

t= t + (6,7)
(1,2,3,4,5,6,7)