我试图交换列表A
的元素,即(i,j)
变成(j,-i)
。但是有一个错误。
A=[(0,0),(0,1),(1,0),(1,1)]
for i in range(0,len(A)-1):
for j in range(0,len(A)-1):
A[i][j]=A[j][-i]
错误是
in <module>
A[i][j]=A[j][-i]
TypeError: 'tuple' object does not support item assignment
期望输出为
[(0,0),(1,0),(0,-1),(-1,-1)]
您拥有的是一个元组列表,而元组是不可变的。你所做的事情不会被描述为"交换列表中的元素"。如交换元组的元素(并对第二个元素取反)。
如果你有
a = (1, 1)
然后你可以执行这个操作,如:
b = (a[1], -a[0])
在一列项目上执行,这是一个可以用许多不同方式处理的单独抽象级别。例如,使用列表推导式:
A = [(0, 0), (0, 1), (1, 0), (1, 1)]
B = [(a[1], -a[0]) for a in A]
或更简单地使用元组解包:
B = [(j, -i) for i, j in A]