【问题标题】:Efficient way to add elements to a tuple将元素添加到元组的有效方法
【发布时间】:2019-05-27 19:21:18
【问题描述】:

我想向元组添加元素。我找到了两种方法。 Thisthis 回答说添加两个元组。它将创建一个新元组

a = (1,2,3)
b = a + (5,)

正如this所说,将元组转换为列表,添加元素,然后将其转换回元组

a = (1,2,3)
tmp = list(a)
tmp.insert(3, 'foobar')
b = tuple(tmp)

这两者中哪一个在内存和性能方面是有效的?
另外,假设我想在元组中间插入一个元素,使用第一种方法可以吗?
谢谢!

【问题讨论】:

  • 尝试在您提到的方法上运行timeit 以找出答案。参见例如pythoncentral.io/time-a-python-function
  • 简单的答案是:您不能向元组添加项目。元组是不可变的。另一方面,您可以使用该项目创建一个新元组。但您可能希望首先使用列表。

标签: python tuples


【解决方案1】:

如果您只添加单个元素,请使用

a += (5, )

或者,

a = (*a, 5)

元组是不可变的,所以添加一个元素意味着你需要创建一个新的元组对象。除非您要在循环中添加许多元素,否则我不建议强制转换为列表。

a_list = list(a)
for elem in iterable:
    result = process(elem)
    a_list.append(result)

a = tuple(a_list)

如果要在中间插入元素,可以使用:

m = len(a) // 2
a = (*a[:m], 5, *a[m:])

或者,

a = a[:m] + (5, ) + a[m:]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多