首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python For循环执行意外数量的循环

Python For循环执行意外数量的循环
EN

Stack Overflow用户
提问于 2021-02-04 06:46:05
回答 3查看 52关注 0票数 0

我使用嵌套的for循环从数据帧中读取选择性数据。然后,我需要对这些选择性数据实现一些数学公式。出于这个原因,我实现了一个动态逻辑,它将数据的索引和列号分隔在一个列表"idx“和"cols”中。但是,我应用的用于读取此数据的嵌套For循环执行的次数出乎意料地多。

以下是示例代码及其输出:

代码语言:javascript
复制
idx =  [1, 2]
cols = [2, 2]
count = 0

def run_imputation():
    global count
    for i in idx:
        for col in cols:
            count += 1
            print(count)
            dfClean.iloc[i, col] = tempOut[i,col]  #Need to do such and more computations
            origVal.append(dfClean_Orig.iloc[i, col])
            impuVal.append(dfClean.iloc[i, col])

%timeit run_imputation()


OUTPUT:
1
2
...... 
32444

所以我的问题是,为什么是For循环执行32444次,而它应该只执行4次。除了Python中复杂的for循环之外,还有什么更好的方法来进行如下所示的选择性数据计算吗?

EN

回答 3

Stack Overflow用户

发布于 2021-02-04 06:54:43

您尚未显示完整的代码。因此,我只根据你的编码风格来回答。我认为您会多次运行run_imputation()函数。通过不使用任何全局变量,可以避免看到错误的迭代次数。

例如,您可以尝试更改您的编码样式,如下所示:

代码语言:javascript
复制
idx =  [1, 2]
cols = [2, 2]

def run_imputation(idx, cols):
    count = 0
    for i in idx:
        for col in cols:
            count += 1
            print(count)
            dfClean.iloc[i, col] = tempOut[i,col]  # Need to do such and more computations
            origVal.append(dfClean_Orig.iloc[i, col])
            impuVal.append(dfClean.iloc[i, col])
票数 0
EN

Stack Overflow用户

发布于 2021-02-04 07:16:54

对于问题的第一部分:它运行32444次而不是4次,因为您正在使用%timeit魔术命令和您的函数调用run_imputation()。

如果您不想测量函数的执行时间,则不需要使用%timeit。

您可以在此处找到有关该主题的更多详细信息:What is %timeit in python?

这回答了主要问题:"Python For循环执行意外数量的循环“

你问题的第二部分对我来说不是很清楚。如果您能详细说明,我也可以提供帮助。

票数 0
EN

Stack Overflow用户

发布于 2021-02-04 07:27:09

而不是:%timeit run_imputation()

我使用: run_imputation()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66036852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档