我现在想要在理解中有办法做到这一点。
我有一个用零填充的矩阵(NxN)
indx = [(3, 3), (4, 3), (4, 4), (3, 4), (2, 4), (2, 3), (2, 2), (3, 2), (4, 2), (5, 2), (5, 3), (5, 4), (5, 5), (4, 5), (3, 5), (2, 5), (1, 5), (1, 4), (1, 3), (1, 2), (1, 1), (2, 1), (3, 1), (4, 1), (5, 1), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6), (5, 6), (4, 6), (3, 6), (2, 6), (1, 6), (0, 6), (0, 5), (0, 4), (0, 3), (0, 2), (0, 1), (0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (5, 0), (6, 0)]
我有一个元组列表,以螺旋模式给出了这个矩阵的索引。
for i in indx[0:7]:
control[i] = 1
我的代码如下:
[control[i] = 1 for i in indx[0:7]]
我试图使用:
[control[i] = 1 for i in indx[0:7]]
^
SyntaxError: invalid syntax
但它给了我这个错误:
[[0 0 0 0 0 0 0]
[0 0 0 0 0 0 0]
[0 0 1 1 1 0 0]
[0 0 0 1 1 0 0]
[0 0 0 1 1 0 0]
[0 0 0 0 0 0 0]
[0 0 0 0 0 0 0]]
预期结果:
{{1}}
在理解中有没有办法做到这一点?
提前致谢!
答案 0 :(得分:0)
免责声明:理解旨在构建新的列表,将副作用用于副作用被视为不良样式,因为它会混淆代码并创建一个无用的一次性容器,需要进行垃圾回收。
话虽如此,严格回答你的问题是否有可能做你想做的理解,你可以*但你不应该这样做:
[control.__setitem__(i, 1) for i in indx[0:7]]
这会让你受到正确的打击。你为这个无用的列表创建了什么?
*如果您原来的for
循环没有抛出IndexError
,那就是。