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

LeetCode 832.翻转图像 Python 单行解法代码逐段逻辑讲解请求

LeetCode题目:832. Flipping an Image(翻转图像)

题目描述

给定一个n×n二进制矩阵image,先将图像水平翻转,再进行反转,返回最终得到的图像。
水平翻转指的是反转图像的每一行,例如将[1,1,0]水平翻转得到[0,1,1]。
反转指的是将每个0替换为1、每个1替换为0,例如将[0,1,1]反转得到[1,0,0]。
示例1:
输入:image = [[1,1,0],[1,0,1],[0,0,0]]
输出:[[1,0,0],[0,1,0],[1,1,1]]
解释:首先反转每一行得到[[0,1,1],[1,0,1],[0,0,0]],随后反转图像得到最终结果。

现有Python单行解法

from typing import List
class Solution:
    def flipAndInvertImage(self, image: List[List[int]]) -> List[List[int]]:
        return [[1 ^ i for i in reversed(row)] for row in image]

代码逻辑拆解

这段代码是Python的嵌套列表推导式,执行顺序从右到左、从外层到内层,各部分逻辑拆分如下:

  • 最外层for row in image:遍历输入矩阵的每一行,每一轮循环生成结果矩阵的一行
  • 内层for i in reversed(row):reversed(row)会将当前行倒序,对应题目要求的水平翻转操作,之后遍历翻转后的每一个元素i
  • 循环前的1 ^ i:这是每个元素的最终取值计算逻辑,^为按位异或运算符,1和0异或结果为1,1和1异或结果为0,刚好实现题目要求的0变1、1变0的反转操作

如果把列表推导式展开为普通for循环,等价代码如下:

from typing import List
class Solution:
    def flipAndInvertImage(self, image: List[List[int]]) -> List[List[int]]:
        result = []
        # 对应最外层 for row in image
        for row in image:
            new_row = []
            # 对应内层 for i in reversed(row)
            for i in reversed(row):
                # 对应 1 ^ i 元素计算逻辑
                new_row.append(1 ^ i)
            result.append(new_row)
        return result

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:15:05