[英]Need help in function in Python
I am reviewing below code and having difficulty to understand why digit = values[squares]
is in def eliminate(values)
function.我正在查看下面的代码,但很难理解为什么digit = values[squares]
位于def eliminate(values)
函数中。 Can someone explain why it is done?有人可以解释为什么要这样做吗?
Thanks谢谢
def cross(A,B):
return [a+b for a in A for b in B]
digits = '123456789'
rows = 'ABCDEFGHI'
cols = digits
squares = cross(rows,cols)
unitlist = ([cross(rows,c)for c in cols]+[cross(r,cols)for r in rows]+
[cross(rows,cols)for rows in('ABC','DEF','GHI')for cols in('123','456','789')])
units = dict((s,[u for u in unitlist if s in u])for s in squares)
peers = dict((s, set(sum(units[s],[]))-set([s])) for s in squares)
grid = '..3.2.6..9..3.5..1..18.64....81.29..7.......8..67.82....26.95..8..2.3..9..5.1.3..'
def grid_values(grid):
values =[]
for c in grid:
if c == '.':
values.append(digits)
elif c in digits:
values.append(c)
assert len(grid)==81
return dict(zip(squares,grid))
def eliminate(values):
solved_values =[squares for squares in values.keys() if len(values[squares])==1]
for squares in solved_values:
digit = values[squares]
for peer in peers[squares]:
values[peer]=values[peer].replace(digit,'')
return values
The code in your example:您示例中的代码:
for squares in solved_values:
digit = values[squares]
can be simplified to:可以简化为:
digit = values[squares[-1]]
digit
is used later on in the function, so it seems to be important, but that loop does not need to be a loop, as it seems you've come to understand. digit
稍后在函数中使用,因此它似乎很重要,但该循环不需要是循环,因为您似乎已经理解了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.