替换嵌套在列表中的元组中的单个元素 - 它们是更好的方法吗?

时间:2014-10-13 08:35:41

标签: python list nested tuples

编辑 - 我想更改嵌套在列表中的元组的值,位于特定位置
例如,更改了nestedTuple [1] [1]更改为' xXXXXx'

我已经想出了这个代码,这个代码很有效,但它看起来非常纯粹!'

  • 转换为列表 - 更改 - 转换为元组 - 插入列表

我ASSuME对资源的要求非常高。

有人可以告诉我他们是不是更好的方式?

>>> nestedTuple= [('a','b','c'), ('d','e','f'), ('g','h','i')]
>>> tempList = list(nestedTuple[1])
>>> tempList[1] = 'xXXXXx'
>>> nestedTuple[1] = tuple(tempList)
>>> print nestedTuple
[('a', 'b', 'c'), ('d', 'xXXXXx', 'f'), ('g', 'h', 'i')]

5 个答案:

答案 0 :(得分:1)

您可以使用切片。

>>> i = 1
>>> nestedTuple = [('a','b','c'), ('d','e','f'), ('g','h','i')]
>>> nestedTuple[1] = nestedTuple[1][:i] + ('xXXXXx', ) + nestedTuple[1][i+1:]
>>> nestedTuple
[('a', 'b', 'c'), ('d', 'xXXXXx', 'f'), ('g', 'h', 'i')]

答案 1 :(得分:1)

这个怎么样?

nested_tuple[1] = tuple('XXXXX' if i==1 else x for i, x in enumerate(nested_tuple[1]))

请注意,元组不应该被更改,因此一个衬垫不会非常干净。

答案 2 :(得分:0)

取决于您希望在nestedTuple中进行多少更改,具体取决于程序中的下游。您可能想要从nestedTuple

构建一个nestedList
nestedList = [list(myTuple) for myTuple in nestedTuple]

然后执行:

nestedList[x][y] = 'truc'

然后根据需要创建一个新的nestedTuple

否则你应该对此进行分析

答案 3 :(得分:0)

我知道这是你得到的数据结构。除了性能之外,它会使更清晰和可读的代码将数据更改为嵌套列表,执行操作,如果需要将其写回以将其转换回嵌套元组。在速度方面可能不是最理想的,但这可能不是您申请的限制因素。

nestedTuple= [('a','b','c'), ('d','e','f'), ('g','h','i')]
nestedList = [list(x) for x in nestedTuple]

现在您可以使用普通列表切片和分配

nestedList[1][1] = ['xxxxXXxxx']

如果您需要以原始嵌套元组格式返回数据,请使用一个衬垫:

nestedTuple = [tuple(x) for x in nestedList]
如果您的数据结构增长并且切片变得更加复杂,那么

最具可读性且最不可能包含错误。

答案 4 :(得分:-1)

使用元组的目的是它的不可变性意味着一旦创建了元组,就无法更改这些值。在您的情况下,最好的方法是使用嵌套列表,如下所示

>>> nestedList = [['a','b','c'], ['d','e','f'], ['g','h','i']]

现在改变元素' e'在列表中' xxxx'你可以使用如下所示

>>> nestedList[1][1] = 'xxxx'