我现在想知道是否有一种方法可以在理解中做到这一点。你知道吗
我有一个矩阵(NxN)充满了零
control = np.zeros((7,7), dtype=np.int)
print control
array([[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0]])
我有一个元组列表,以螺旋模式给出这个矩阵的索引。你知道吗
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]]
在理解中有没有办法做到这一点?你知道吗
提前谢谢!你知道吗
免责声明:理解的目的是建立新的列表,使用它们的副作用被认为是坏的风格,因为它混淆了代码,并创建了一个无用的一次性容器,需要垃圾收集。你知道吗
也就是说,严格地回答你的问题如果你能理解你想做的事情,你可以*但你不应该做:
这会让你受到应有的惩罚。你为什么要创建那个无用的列表?你知道吗
*如果您原来的
for
循环没有抛出IndexError
,也就是说。你知道吗相关问题 更多 >
编程相关推荐