You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现列表元组(i,j)转(j,-i)报元组不支持项赋值错误

错误原因
  • 元组是Python中的不可变序列类型,一旦创建就无法修改内部单个元素的值。你的代码中A[i][j] = A[j][-i]的操作,本质是尝试修改列表A中存储的元组的内部元素,这是Python语法不允许的,因此直接抛出TypeError: 'tuple' object does not support item assignment错误。
  • 除了元组不可变的问题,你的代码逻辑本身也不符合转换需求:
    • 双层循环的写法完全偏离了「逐个转换列表中每个元组」的目标
    • range(0, len(A)-1)的索引范围只会遍历到列表倒数第二个元素,会漏掉最后一个元组
    • 取值逻辑A[j][-i]和你要求的(i,j) -> (j,-i)转换规则没有对应关系,就算元组支持修改也得不到正确结果。
修改方案

不需要修改原有元组,只需要遍历列表中的每一个元组,按照转换规则生成新元组,替换列表对应位置的元素即可,参考代码如下:

A = [(0,0), (0,1), (1,0), (1,1)]
for index, (i, j) in enumerate(A):
    # 按规则生成新元组,替换原位置的旧元组
    A[index] = (j, -i)
print(A)

运行后输出结果为:[(0, 0), (1, 0), (0, -1), (-1, -1)],和预期结果一致。

如果追求更简洁的写法,也可以直接用列表推导式生成新列表:

A = [(0,0), (0,1), (1,0), (1,1)]
A = [(j, -i) for i, j in A]

内容的提问来源于stack exchange,提问作者Wiz123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 00:54:21