Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用lambda函数代替for循环_Python_Pandas - Fatal编程技术网

Python 如何使用lambda函数代替for循环

Python 如何使用lambda函数代替for循环,python,pandas,Python,Pandas,我有两个for循环运行在一些数据上,最后,计算一些操作的行数和累计df。代码在这里 def preprocess(dfs, functions): storage = [] row = 0 for df in dfs: for func in functions: df = func(df) row += row + df.shape[0] storage.append(df) df =

我有两个for循环运行在一些数据上,最后,计算一些操作的行数和累计df。代码在这里

def preprocess(dfs, functions):
    storage = []
    row = 0

    for df in dfs:
        for func in functions:
            df = func(df)
        row += row + df.shape[0] 
        storage.append(df)

    df = pd.concat(storage, ignore_index=True)
    return row, df

我可以使用lambda函数来减少代码,使代码更优雅、性能更好吗?

这是我的答案,因为我得到了几张反对票,但没有一张能回答这个问题。这当然可以用lambda实现,但是,它可能不会提高性能

def preprocess(dfs, functions):
    d = [map(lambda func: func(df), functions) for df in dfs]
    df = pd.concat(d[-1], ignore_index=True)
    return df.shape[0], df

lambda不是性能特性。在代码中使用更多的lambda并不会使它更快。lambda只是在表达式中创建函数的一种方法,其中函数体只包含一个return语句。调用一个函数会有开销,所以如果你以前没有函数,使用lambda不会让事情变得更快。好吧,我明白了。-4的意义是什么?我想这个问题没那么糟糕。你刚刚毁了这个帐户。你确定要执行row+=row+df.shape[0]吗?这不应该是row+=df.shape[0]还是row=row+df.shape[0]?你的问题不太妙,但我认为它当然不值得4次否决票,我几乎可以肯定,没有任何评论者投了否决票,这不是他们的风格。然而,有些人认为如何使这段工作代码运行得更快问题应该在代码审查上,而不是这样。或者你可能因为没有做足够的研究来了解lambda不是一个性能增强功能而被否决了,它肯定不是for循环的替代品。