简单的乐趣#59:反转对角线【难度:1级】--(Python Solutions)最佳题目答案合集(含多种解法)--景越编程训练之挑战1000道Python面试题

简单的乐趣#59:反转对角线【难度:1级】:

答案1:

def reverse_on_diagonals(matrix):
    copy = [ line[:] for line in matrix ]
    for i in range(len(matrix)):
        copy[i][i]    = matrix[-1-i][-1-i]
        copy[i][-1-i] = matrix[-1-i][i]
    
    return copy​

答案2:

def reverse_on_diagonals(matrix):
    l = len(matrix)
    for i in range(l // 2):
        j = l - i - 1
        matrix[i][i], matrix[j][j] = matrix[j][j], matrix[i][i]
        matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
    return matrix​

答案3:

def reverse_on_diagonals(mx):
    dl = []
    dr = []
    for i in range(len(mx)):
        dl.append(mx[i][i])
        dr.append(mx[i][-i-1])
    for i in range(len(mx)):
        mx[i][i] = dl.pop()
        mx[i][-i-1] = dr.pop()
    return mx​

答案4:

r=reversed;x=enumerate;reverse_on_diagonals=lambda m:[[f if i==j or len(m[i])-(i+j+1)==0 else m[i][j]for j,f in x(e)]for i,e in x([list(r(e))for e in r(m)])]

答案5:

def reverse_on_diagonals(matrix):
    diagonals = [(row[idx], row[-idx-1]) for idx, row in enumerate(matrix)]        
    
    for idx, ch in enumerate(reversed(diagonals)):
        matrix[idx][idx], matrix[idx][-idx-1] = ch
      
    return matrix    
​

答案6:

def reverse_on_diagonals(matrix):
    for i in range(int(len(matrix)/2)):
        matrix[i][i],matrix[len(matrix)-1-i][len(matrix)-1-i] = matrix[len(matrix)-1-i][len(matrix)-1-i],matrix[i][i]
        matrix[len(matrix)-1-i][i],matrix[i][len(matrix)-1-i] = matrix[i][len(matrix)-1-i],matrix[len(matrix)-1-i][i]
    return matrix​

答案7:

def reverse_on_diagonals(matrix):
    n = len(matrix)
    for i in range(n//2):
        matrix[i][i], matrix[n-i-1][n-i-1] = matrix[n-i-1][n-i-1], matrix[i][i]
        
        matrix[i][n-i-1], matrix[n-i-1][i] = matrix[n-i-1][i], matrix[i][n-i-1] 
        
    return matrix​

答案8:

def reverse_on_diagonals(matrix):
    n = len(matrix)
    for i in range(n//2):
        tmp = matrix[i][i]
        matrix[i][i] = matrix[n-i-1][n-i-1]
        matrix[n-i-1][n-i-1] = tmp
        
        tmp = matrix[i][n-i-1]
        matrix[i][n-i-1] = matrix[n-i-1][i]
        matrix[n-i-1][i] = tmp        
        
    return matrix​

答案9:

def reverse_on_diagonals(matrix):
    size = len(matrix)
    for i in range(size // 2):
        matrix[i][i], matrix[size - i - 1][size - i - 1] = matrix[size - i - 1][size - i - 1], matrix[i][i]
        matrix[i][size - i - 1], matrix[size - i - 1][i] = matrix[size - i - 1][i], matrix[i][size - i - 1]
    return matrix
    ​

答案10:

def reverse_on_diagonals(matrix):
  size = len(matrix)
  return [[matrix[size-j-1][size-i-1] if i == j or i == size-j-1 else x for i, x in enumerate(row)] for j, row in enumerate(matrix)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值