For 循环嵌套在 if 语句中嵌套在 for 循环中的 if 语句

如何解决For 循环嵌套在 if 语句中嵌套在 for 循环中的 if 语句?

这个问题主要是关于通过切换 if 语句和 for 循环的顺序来优化脚本的性能我有一个类似于下面的代码(为了简化目的,我删除了所有不必要的位)。我写了我想到的三个选择。 版本 1:

for rowindex in range(400):
    for columnindex in range(10):
        exec(f'{something}1 = ...')
        if comparisonbool:
            exec(f'{something}2 = ...')

版本 2:

for rowindex in range(400):
    if comparisonbool:
        for columnindex in range(10):
            exec(f'{something}1 = ...')
            exec(f'{something}2 = ...')
    else:
        for columnindex in range(10):
            exec(f'{something}1 = ...')

版本 3:

if comparisonbool:
    for rowindex in range(400):
        for columnindex in range(10):
            exec(f'{something}1 = ...')
            exec(f'{something}2 = ...')
else:
    for rowindex in range(400):
        for columnindex in range(10):
            exec(f'{something}1 = ...')

所以,虽然我发现版本 1 看起来更好,但我想知道版本 2 或 3 是否会带来更好的性能。 我的推理是,在版本 3 中,if 语句 if 只检查一次,然后代码根据其结果运行。在版本 2 中,它被检查了 400 次。在版本 1 中,它被检查了 4000 次

但是,我尝试使用 time.perf_counter() 对其进行计时 [我在循环前后直接运行它并计算了两者之间的差异]。 我为三个版本中的每一个计时 6 次运行,并获得以下平均运行时间:Tv1:0.56s,Tv2:0.50s,Tv3:0.53s 我相信时间上的差异是微不足道的,并且是由随机变量引起的,因为重复我的实验会得到不同的结果(有时 v3 最快,有时 v1 等...)

我的问题是:考虑到微不足道的性能差异,我应该坚持使用第 1 版,还是会因为某种原因将第 2 版或第 3 版视为更“pythonic”?

我尝试通过比较不同的排序选项来搜索讨论此问题的帖子,但找不到任何帖子。 我认为自己对 python 比较陌生,这是我在这个网站上的第一篇文章,所以我希望我的问题表述得很好且易于理解。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

其他编程问答

如何捕获不存在的属性的错误?示例: const arr = [ { neighbours: [➯G', ɼNG'], },]; 现在,当我试图访问一个可能存在也可能不存在的属...
在setState上,我收到以下TS错误: “类型ɺxiosResponse‘缺少类型’countries[]‘的以下属性:长度、pop、push、concat和26 more.ts(2740)”...
我是typescript的新手,正在尝试为Typescript构建一个react样板。但无法导入格式为“.tsx”的组件。 我的tsconfig文件如下所示: { "compilerOption...
当我在VS代码中使用Jupyter Notebook时,我遇到了一个问题。屏幕显示"Python 3.7.8 requires ipykernel to be installed“。我按照弹出窗口的...
我正在尝试输入一个形状为( 1,8,32,32,32 )的5D张量到我写的VAE: self.encoder = nn.Sequential( nn.Conv3d( 8, 16, 4...
在控制器中: RefreshController refreshController = RefreshController(initialRefresh: false); @overrid...
我试图构建我的安卓应用程序有一段时间了,似乎找不到任何解决这个问题的方法:Image Unity版本: Unity 2020.3.21f1 (64位) JDK、SDK、NDK和Gradle是Unit...
我正在尝试测试selenium,以获得自动登录网站的解决方案,但我甚至无法让Selenium保持打开状态。它做它现在应该做的事情,然后在没有driver.quit()的情况下立即退出。我得到了以下错...
我正在尝试开发一个springboot/react应用程序,并且已经安装了react并创建了react项目。但是,当我尝试执行以下命令时: npm run 我得到以下错误: Lifecycle sc...
我有大约5e9 (15e4记录每小时)记录存储在clickhouse中。这些记录是按时间顺序的。当我以10分钟的time_range运行某个查询时: select * from table_name...
Could not load library cudnn_cnn_infer64_8.dll. Error code 126Please make sure cudnn_cnn_infer64_8...
我正在和gatsby一起创建一个新项目 gatsby new YourProjectName2 https://github.com/Vagr9K/gatsby-advanced-starter 并...