栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 怎么取二维数组的每列元素 & 固定大小的小二维数组

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 怎么取二维数组的每列元素 & 固定大小的小二维数组

对标**leetcode:36.有效的数独**

写这个题解主要是为了记一下怎么在python取一个二维列表的每一列,还有怎么取每个3*3的小二维数组。

注意:!!!此题中的元素都是字符,所以判断的时候不能与数字比较,要跟字符比较!!!

python如何取二维数组的每一列

以此题为例,二维列表的第一列应该这样写:
[arr[0] for arr in board]
以此类推,取每一列应该是:
[[arr[idx] for arr in board] for idx in range(9)]
我们在这个题目中,每次取一列,可以这样写:

# 判断列
for i in range(9):
    for k in range(1, 10):
        if [arr[i] for arr in board].count(str(k)) > 1:
            return False
python如何取固定大小的二维数组

比如此题中的9 * 9的数组中取左上角的3 * 3的数组,应该这样写:
[i[j] for j in range(3) for i in board[0:3]]
依此类推,我们要取9个3*3的小二维数组,应该这样写:

# 判断3*3
for i in range(3):
    for j in range(3):
        for k in range(1, 10):
            if [arr[idx] for idx in range(3*j,3*(j+1)) for arr in board[3*i:3*(i+1)]].count(str(k)) > 1:
                return False

全部代码如下:

class Solution:
    def isValidSudoku(self, board: List[List[str]]) -> bool:
        # print([[arr[idx] for arr in board] for idx in range(9)])
        # print([i[j] for j in range(3) for i in board[0:3]])
        
        # 判断行是够满足数独
        for row in board:
            for i in range(1, 10):
                if row.count(str(i)) > 1:
                    return False
        
        # 判断列
        for i in range(9):
            for k in range(1, 10):
                if [arr[i] for arr in board].count(str(k)) > 1:
                    return False

        # 判断3*3
        for i in range(3):
            for j in range(3):
                for k in range(1, 10):
                    if [arr[idx] for idx in range(3*j,3*(j+1)) for arr in board[3*i:3*(i+1)]].count(str(k)) > 1:
                        return False

        return True
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/840811.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号