如果元素的替换写在两行中,则矩阵传输不正确
x=[[i for i in list(map(int,input().split()))]
for _ in range(int(input()))]
print("Result:")
for i in range(len(x)):
for j in range(i,len(x)):
if i>0:
j-=1
x[i][j]=x[j][i]
x[j][i]=x[i][j]
[print(*i) for i in x]
输入:3 1 2 3 4 5 6 7 8 9
结果:1 4 7 4 5 6 7 6 9
如果元素的替换写在一行中,则矩阵的传输可以正确进行
x=[[i for i in list(map(int,input().split()))]
for _ in range(int(input()))]
print("Result:")
for i in range(len(x)):
for j in range(i,len(x)):
x[i][j],x[j][i]=x[j][i],x[i][j]
[print(*i) for i in x]
输入:3 1 2 3 4 5 6 7 8 9
结果:1 4 7 2 5 8 3 6 9
为什么会发生这种情况?我不明白其中的区别
让我们通过删除索引和分配样本值来简化这一点:
现在做两行:
A
被 的值覆盖B
,然后新值被复制回B
。A 的原始值丢失。使用一行时:
Python(我假设这是你使用的语言)创建一个中间元组,用于存储 B 和 A 的原始值,然后在写回 A 和 B 时交换它们