编辑 - 我想更改嵌套在列表中的元组的值,位于特定位置
例如,更改了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')]
答案 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
构建一个nestedListnestedList = [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'