微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以通过每层的操作来缩短多层“ for in”?

如何解决是否可以通过每层的操作来缩短多层“ for in”?

我正在用Codewars解决Sudoku kata,这是我的代码

def valid_solution(S):
    s=[];L=[];l=[];S1=S[:3];S2=S[3:6];S3=S[6:]
    def verif(S):
        for i in S:
            if len(set(i))!=9 or 0 in set(i): return False
    for z in range(0,9):
        for i in range(len(S)): s.append(S[i][z])
        L.append(s);s=[]
    def loop(h):
        x=3;y=0;s=[];l=[]
        for z in range(len(h)):
            for i in range(3): s.append(h[i][y:x])
            y+=3;x+=3;l.append(s);s=[]
        return l
    l=loop(S1)+loop(S2)+loop(S3)
    for i in range(len(l)):
        for z in range(len(l[i])): l[i][z]=''.join(list(map(str,l[i][z])))
        l[i]=''.join(l[i])
    return False if verif(L)==False or verif(S)==False or verif(l)==False else True

我想知道是否有一种方法可以使它更短,而不是不使用矩阵等,而是通过使“ for in”循环更短。

示例:

for z in range(0,9):
        for i in range(len(S)): s.append(S[i][z])
        L.append(s);s=[]

->

[(L.append(s),s=[]) [s.append(S[i][z] for z in range(0,9)] for i in range(len(S))]

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。