问题
元组是immutables确实如此。 a
可能是一个列表,甚至是一个列表的列表。所以这个代码:
L = list(a)
不会改变任何东西。问题似乎是a
是元组列表的列表。a[i][j]
是一个元组,这是不可能的新值分配给它:
>>> t = ('a', 'b')
>>> t[0] = 'b'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
可能的解决方法
如果你有3 d矩阵工作,numpy
或许可以帮助你。它支持advanced indexing and slicing:
>>> import numpy as np
>>> table = np.arange(18).reshape(3,3,2)
>>> table
array([[[ 0, 1],
[ 2, 3],
[ 4, 5]],
[[ 6, 7],
[ 8, 9],
[10, 11]],
[[12, 13],
[14, 15],
[16, 17]]])
>>> table[:, :, [0, 1]] = table[:, :, [1, 0]]
>>> table
array([[[ 1, 0],
[ 3, 2],
[ 5, 4]],
[[ 7, 6],
[ 9, 8],
[11, 10]],
[[13, 12],
[15, 14],
[17, 16]]])
矩阵内的元素不必是数字,它们可以是任何对象:
>>> class T(str):
... pass
...
>>> T('test')
'test'
>>> m = np.array([[(T(1), T(2))],[(T(3), T(4))]])
>>> m[:, :, [0, 1]] = m[:, :, [1, 0]]
>>> m
array([[['2', '1']],
[['4', '3']]],
dtype='<U1')
我们需要看到一个[MCVE。是元组元组的一个元组? –
'队'从哪里来? – arsho
最外层是元组还是列表? – James