【发布时间】:2023-02-15 22:11:18
【问题描述】:
我有一个嵌套的 for 循环,它访问的元素将修改具有 N+2 行和 M+2 列的数组的元素 arr[1:N+1, 1:M+1]。如何将这个嵌套的 for 循环转换为没有任何 if 语句的单个 for 循环?
这是嵌套的 for 循环当前的样子:
N = 2
M = 2
ncols = M+2
for i in range(1, N+1):
for j in range(1, M+1):
print(i, j, i*ncols + j)
# Output:
# 1 1 5
# 1 2 6
# 2 1 9
# 2 2 10
这是我的尝试,但您会注意到我没有根据输出中的索引访问数组的正确部分。
for i in range(ncols+1, (N+1) * (M+1)):
row = i // ncols
cols = i % ncols
print(row, col, row*ncols + col)
# Output:
# 1 1 5
# 1 2 6
# 1 3 7
# 2 0 8
【问题讨论】:
-
如果您想要 C 解决方案,用 C 编写示例并使用
c标记怎么样?没有适当的标签,人们不太可能找到您的问题。 -
数组声明是什么样的?为什么从索引 1 而不是索引 0 开始?
-
你说“N+2行M+2列”应该是4行4列吧?
标签: for-loop optimization