在Python中交换列表中的元素



我试图交换列表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]

最新更新