如何递归组合列表中的元素对?

时间:2019-06-26 20:10:36

标签: python

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

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

我尝试了一些递归函数,但这不太正确。

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

1 个答案:

答案 0 :(得分:4)

有一种函数可以用于这类事情,称为reduce。您将这样使用它:

from functools import reduce

final_df = reduce(dedupe, list_of_dataframes)