for i in range(len(W)):
for j in range(len(W[i])):
if abs(i - j) > X:
W[i][j] = 0
但是,如果你不想使用下面的一行代码,那么请不要使用下面的代码:
^{pr2}$
请注意,您问题中的W[i,j]不是访问列表列表中项目的正确语法。您应该改用W[i][j]。在
编辑:对于您的子问题,您可以使用以下列表理解,尽管它不是通过任何方式优化的:
W = [[next((W[j2][k2] for j2 in range(len(W)) for k2 in range(len(W[j2])) if j1 - k1 == j2 - k2 and abs(j1 - k1) <= X), W[j1][k1]) for k1 in range(len(W[j1]))] for j1 in range(len(W))]
显然,您希望将
0
分配给现有列表列表W
中的选择性项。如果是这样的话,使用嵌套的for
循环有选择地更新项会更有效:但是,如果你不想使用下面的一行代码,那么请不要使用下面的代码:
^{pr2}$请注意,您问题中的
W[i,j]
不是访问列表列表中项目的正确语法。您应该改用W[i][j]
。在编辑:对于您的子问题,您可以使用以下列表理解,尽管它不是通过任何方式优化的:
编辑如果您的原始
W
数据结构是一个NumPy数组,您可以进行一些奇特的索引以避免完全循环。在这比嵌套循环快得多,效率也更高。在
原帖
几项准备工作:
首先,我注意到没有
abs(i - j) <= X
的条件,所以我包含了一个else 1
条件。在其次,我无法判断
W
是否已经存在(即,是预先分配的),或者您是在理解中创建的。我把它当作是存在的。在第三,如果前一个问题的答案是}本身就有问题。在
^{pr2}$W
还不存在,那么在理解中使用{相关问题 更多 >
编程相关推荐