更新
抱歉各位,但之前的数字是不准确的。当我测试之前的代码时,我曾经tqdm看到预期的时间,当可迭代对象很长时,该函数会损害性能。所以我得到 18.22s,这是 2.43s 的 9 倍。
然而,结论是一致的:嵌套循环要快得多。当迭代时间为 100^5 时,差异显着:321.49 vs 210.05。它们之间大约有 1.53 倍的差距。一般来说,我们不会面对这种长迭代,我只是想知道异常情况的原因。

我的 python 版本是 3.7.3。我使用 13 英寸 MacBookPro2019 和 2.4 GHz Intel Core i5。操作系统为 macOS Mojave 10.14.6
我在python中发现了一个奇怪的情况,如下所示:
import time
start = time.time()
# flattened loop
for i in range(100**4):
pass
print(time.time() - start) # 18.22(Wrong! Should be 3.09)
# nested loop
start = time.time()
for i in range(100):
for j in range(100):
for k in range(100):
for l in range(100):
pass
print(time.time() - start) …Run Code Online (Sandbox Code Playgroud) 在 PyTorch 中,内置torch.roll函数只能以相同的偏移量移动列(或行)。但我想用不同的偏移量来移动列。假设输入张量是
[[1,2,3],\n [4,5,6],\n [7,8,9]]\nRun Code Online (Sandbox Code Playgroud)\n比方说,我想i对第 i 列进行偏移量移动。因此,预期输出是
[[1,8,6],\n [4,2,9],\n [7,5,3]]\nRun Code Online (Sandbox Code Playgroud)\n这样做的一个选项是使用每个列单独移动torch.roll并连接它们。但出于有效性和代码紧凑性的考虑,我不想引入循环结构。有没有更好的办法\xef\xbc\x9f