Answers:
元组是不可变的;您无法在构造后更改它们包含的变量。但是,您可以将它们串联或切片以形成新的元组:
a = (1, 2, 3)
b = a + (4, 5, 6) # (1, 2, 3, 4, 5, 6)
c = b[1:] # (2, 3, 4, 5, 6)
并且,当然,要根据现有价值来构建它们:
name = "Joe"
age = 40
location = "New York"
joe = (name, age, location)
a = ()
,和b= a + (5)
,即可得出b = 5,因此b= a + (5,)
,将导致b = (5,)
;一个元组。
您可以从类似的空白元组开始t = ()
。您可以添加+
,但必须添加另一个元组。如果要添加单个元素,请使其成为单例:t = t + (element,)
。您可以添加带有或不带有逗号的多个元素的元组。
>>> t = ()
>>> t = t + (1,)
>>> t
(1,)
>>> t = t + (2,)
>>> t
(1, 2)
>>> t = t + (3, 4, 5)
>>> t
(1, 2, 3, 4, 5)
>>> t = t + (6, 7, 8,)
>>> t
(1, 2, 3, 4, 5, 6, 7, 8)
t = ()
然后t += (1,)
尚未提及的另一种策略是使用追加到列表,然后在最后将列表转换为元组:
mylist = []
for x in range(5):
mylist.append(x)
mytuple = tuple(mylist)
print mytuple
退货
(0, 1, 2, 3, 4)
当我必须将元组作为函数参数传递时,有时会使用此函数,这对于numpy函数通常是必需的。
list(someTuple)
也可以)很有用。两种对象类型显然可以互换
在Python 3中,您可以用来*
根据原始元组以及新元素创建一个新的元组元素。
>>> tuple1 = ("foo", "bar")
>>> tuple2 = (*tuple1, "baz")
>>> tuple2
('foo', 'bar', 'baz')
tuple1 + ("baz",)
。
正如其他答案所指出的那样,您无法更改现有的元组,但始终可以创建一个新的元组(该元组可能会从现有的元组和/或其他来源中获取部分或全部项目)。
例如,如果所有感兴趣的项都在标量变量中,并且您知道这些变量的名称,则:
def maketuple(variables, names):
return tuple(variables[n] for n in names)
使用,例如,在本示例中:
def example():
x = 23
y = 45
z = 67
return maketuple(vars(), 'x y z'.split())
当然,这一种情况将更简单地表示为(x, y, z)
(或什至完全不使用名称(23, 45, 67)
),但是该maketuple
方法在一些更复杂的情况下可能很有用(例如,要使用的名称也是动态确定的,并在使用过程中附加到列表中)。计算)。