【发布时间】:2016-03-27 13:57:12
【问题描述】:
我有一个元组x = (2,),我想在其中附加一个变量y。我提前不知道y 到底是个什么样的变量。
y 可能是:
- 一个元组,在这种情况下我很乐意使用
x+y,或者 - 单个对象(通常是字符串或整数),在这种情况下我应该使用
x+(y,)。
采用一种策略会在一半的情况下给我一个 TypeError,而采用另一种策略会在我想要(2, 3, 4) 时给我(2, (3, 4))。
处理这个问题的最佳方法是什么?
【问题讨论】:
-
一方面,元组是不可变的,因此您正在创建一个新对象。另一方面,您可以捕获错误并尝试其他方法。
-
有时你会得到元组,有时会附加标量,这让我很困扰。在 python 中,您可以获得不同类型的值的唯一有效场景是在模拟函数重载时。在这种情况下,检查
type(y) == tuple或isinstance(y, tuple)或isinstance(y, collections.Iterable)完全没问题 -
感谢 Jon,我的语言有点松散,它确实是一个新对象。就 Tamas 而言,我正在处理可以在多个集合上索引的框架内的对象。当我迭代在单个集合上定义的对象时,我会得到单个项目索引,但如果我正在迭代在多个集合上定义的对象,在这种情况下,我会得到元组。
标签: python tuples concatenation