首页 > 解决方案 > 如何递归组合列表中的元素对?

问题描述

我正在尝试对一些 pandas DataFrames 进行重复数据删除,并且我有一个可以成对执行此操作的函数(即一次两个 dfs)。我想编写另一个函数,它采用任意长度的 DataFrame 列表并组合列表中的前两个元素,然后将结果与列表中的第三个元素组合,直到我们到达列表的末尾。

为简单起见,我假设我的重复数据删除功能只是字符串连接。

我尝试了一些递归函数,但它并不完全正确。

def dedupe_recursive(input_list):
    if input_list == []:
        return 
    else:
        for i in range(0, len(input_list)-1):
            new_list = input_list[i+1:]
            deduped = dedupe(new_list[i], new_list[i+1])
            print(deduped, new_list)
            return dedupe_recursive(new_list)

输入(列表):['a', 'b', 'c', 'd']

输出(列表列表):[['ab'], ['ab', 'c'], ['abc', 'd']]

标签: python

解决方案


正是这种事情有一个函数,它被称为reduce. 你会像这样使用它:

from functools import reduce

final_df = reduce(dedupe, list_of_dataframes)

推荐阅读