作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 python 3.6。
我对第 09 行和第 10 行中的解包感到非常困惑。我希望 dy_outer
在第 09 行等于 (0, -1) 和 dy_inner
在第 09 行等于 (side-1, 0)。同样,我希望 dx_outer
和 dx_inner
在第 10 行分别等于 (0, -1) 和 (side-1, 0)。
但是,当 set_trace 关闭时,我看到的是 dy_outer
的值和 dy_inner
从第 09 行开始分别等于 0 和 -1。 dx_outer
也是如此和 dx_inner
从第 10 行开始;它们也分别等于 0 和 -1。offsets
是一个元组元组,所以当你迭代它时,它应该解包每个元组,而不是第一个元组中的每个元素。
我对 Python 范围的直觉不正确吗?
01 def cover(board, lab = 1, top = 0, left =0, side = None):
02 if side is None:
03 side = len(board)
04
05 s = side // 2
06
07 offsets = (0, -1), (side-1, 0)
08
09 for dy_outer, dy_inner in offsets:
10 for dx_outer, dx_inner in offsets:
11 set_trace()
12 if not board[top+dy_outer][left+dx_outer]:
13 board[top + s + dy_inner][left+s+dx_inner] = lab
14 lab += 1
15 if s > 1:
16 for dy in [0,s]:
17 for dx in [0, s]:
18 lab = cover(board, lab, top+dy, left+dx, s)
19 return lab
最佳答案
谜底分为三部分。首先,offsets 结构体是一个二维数组:
((0, -1),
(side-1, 0))
>>> for row in offsets:
print(row)
(0, -1)
(18, 0)
>>> for column_zero, column_one in offsets:
print('Column 0:', column_zero)
print('Column 1:', column_one)
print()
Column 0: 0
Column 1: -1
Column 0: 18
Column 1: 0
print('dy_o', 'dy_i', 'dx_o', 'dx_i', sep='\t\t')
print('----', '----', '----', '----', sep='\t\t')
for dy_outer, dy_inner in offsets:
for dx_outer, dx_inner in offsets:
print(dy_outer, dy_inner, dx_outer, dx_inner, sep='\t\t')
dy_o dy_i dx_o dx_i
---- ---- ---- ----
0 -1 0 -1
0 -1 18 0
18 0 0 -1
18 0 18 0
关于python-3.x - 意外的元组解包,可能的范围问题/混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54800639/
我是一名优秀的程序员,十分优秀!