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

2024-09-28 01:32:24 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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循环之外,还有没有更好的方法来进行如下所示的选择性数据计算


Tags: 数据runinforcountcol数学公式cols
3条回答

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

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

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])

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

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

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

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

你问题的第二部分我不太清楚。如果你能详细说明的话,我也可以帮你

而不是: %timeit run_插补()

我用过: run_插补()

相关问题 更多 >

    热门问题