L1_Sta2 2022-04-02 17:12 采纳率: 0%
浏览 42

python中enumerate函数中下标取值和直接取值为何会出现不同

如题 leetcode695题当中我用两次循环来遍历grid当中的数字
for x, i in enumerate(grid):
for y, j in enumerate(i):
然后在后续使用过程中,发现grid[x][y]和j的值在特定情况下出现不同
特定的测试用例是

[[1,0,1],[1,0,0],[0,0,1]]

会导致下标为[1][2]的元素在使用j值的时候被误判
请问有没有大 佬能帮我看看 淦
跪 谢!

class Solution:
    def maxAreaOfIsland(self, grid: List[List[int]]) -> int:
        m, n = len(grid), len(grid[0])
        que = collections.deque()
        ans = 0
        area = 0
        for x, i in enumerate(grid):
            for y, j in enumerate(i):
                if grid[x][y]: # 这里好像不能用j为什么?
                    que.append((x, y))
                    grid[x][y] = 0
                    area = 1
                    while que:
                        x, y = que.popleft()
                        for mx, ny in [(x, y-1), (x, y+1), (x-1, y), (x+1, y)]:
                            if 0 <= mx < m and 0 <= ny < n and grid[mx][ny] == 1:
                                area += 1
                                que.append((mx, ny))
                                grid[mx][ny] = 0
                    ans = max(ans, area)
        return ans


img

img

  • 写回答

1条回答 默认 最新

  • 陈年椰子 2022-04-02 19:43
    关注

    对于这两条语句, x, y 分别代表着下标, i , y 分别对应元素。 i , j 就相当于一个元素
    你说的不能用j 是啥意思?

    for x, i in enumerate(grid):
         for y, j in enumerate(i):
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月2日

悬赏问题

  • ¥45 求17位带符号原码乘法器verilog代码
  • ¥20 PySide6扩展QLable实现Word一样的图片裁剪框
  • ¥15 手游上号器是如何获取到游戏在微信平台的appid
  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值
  • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢