問題
元組是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