Python3-累积函数替代方案

Python3-累积函数替代方案,python,function,loops,python-3.x,Python,Function,Loops,Python 3.x,我想知道是否有一种更像蟒蛇的方法,或者其他的方法,可以做到这一点。我想比较累积函数的结果。每个函数都会修改前一个函数的输出,我想在每个函数之后看看效果如何。请注意,为了在运行主函数后获得实际结果,需要最后一个函数来计算某些内容。在代码中,事情是这样的(只是一种伪代码): 如您所见,对于n函数,我需要1/2(n(n+1))手动创建循环。如我所说,是否有更具python风格的东西(例如一个包含函数的列表?)可以清理代码,并在添加越来越多的函数时使代码变得更短、更易于管理 实际代码,其中文档是一个自定

我想知道是否有一种更像蟒蛇的方法,或者其他的方法,可以做到这一点。我想比较累积函数的结果。每个函数都会修改前一个函数的输出,我想在每个函数之后看看效果如何。请注意,为了在运行主函数后获得实际结果,需要最后一个函数来计算某些内容。在代码中,事情是这样的(只是一种伪代码):

如您所见,对于
n
函数,我需要
1/2(n(n+1))
手动创建循环。如我所说,是否有更具python风格的东西(例如一个包含函数的列表?)可以清理代码,并在添加越来越多的函数时使代码变得更短、更易于管理

实际代码,其中
文档
是一个自定义对象:

for doc in documents:
    doc.list_strippedtext = prepareData(doc.text)
bow = createBOW(documents)  

for doc in documents:
    doc.list_strippedtext = prepareData(doc.text)
    doc.list_strippedtext = preprocess(doc.list_strippedtext)
bow = createBOW(documents)  

for doc in documents:
    doc.list_strippedtext = prepareData(doc.text)
    doc.list_strippedtext = preprocess(doc.list_strippedtext)
    doc.list_strippedtext = abbreviations(doc.list_strippedtext)
bow = createBOW(documents)

虽然这只是一小部分,但还需要添加更多的函数。

您可以定义一组链,并使用

reduce()
调用有效地执行了
func3(func2(func1(textfile))
if
chain
包含3个函数

我在这里假设,在应用函数链之后,您希望对path中的每个文本文件应用
calculateandPrint()

在原始示例中,
for chain in in chains
循环的每次迭代都代表一个
doStuffx
循环体,但我们仅对路径中的textfile循环一次

您还可以交换循环;根据您的示例进行调整:

for chain in chains:
    for doc in documents:
        doc.list_strippedtext = reduce(lambda data, func: func(data), chain, doc.text)
    bow = createBOW(documents)  

您可以定义一组链,并使用

reduce()
调用有效地执行了
func3(func2(func1(textfile))
if
chain
包含3个函数

我在这里假设,在应用函数链之后,您希望对path中的每个文本文件应用
calculateandPrint()

在原始示例中,
for chain in in chains
循环的每次迭代都代表一个
doStuffx
循环体,但我们仅对路径中的textfile循环一次

您还可以交换循环;根据您的示例进行调整:

for chain in chains:
    for doc in documents:
        doc.list_strippedtext = reduce(lambda data, func: func(data), chain, doc.text)
    bow = createBOW(documents)  

在每个循环中使用循环变量进行填充,将其放入
数据中,然后丢弃除最后一个循环结果之外的所有结果
调用可以缩进吗?事实上,你是对的,更清楚地说:在每个循环中,我在一个对象内编辑一个变量,每个文本文件都有一个不同的对象。因此calculateandPrint()函数使用所有对象,因此使用所有
数据
,尽管从我的示例中可能不太清楚。但重点更多的是函数调用的迭代。在每个循环中,您使用循环变量,将其放入
数据
,然后丢弃除最后一个循环结果以外的所有结果。
是否应计算出dPInt()
调用可以缩进吗?事实上,你是对的,更清楚地说:在每个循环中,我在一个对象内编辑一个变量,每个文本文件都有一个不同的对象。因此calculateandPrint()函数使用了所有的对象,因此使用了所有的
数据
,尽管从我的示例中可能不太清楚。但重点更多的是函数调用的迭代。我认为这接近我想要的答案。我添加了实际的代码,以便更好地了解需要做什么。是否可以使用c使用我的代码进行hains?那么是否可以修改链中对象的内容?当然可以;只需交换我答案中的两个循环;将链循环移出,将每个链应用于文档,内部for循环后的调用
createBOW()
函数,每个链一次。我想这接近我要寻找的答案。我添加了实际的代码,以便更好地了解需要做什么。是否可以将链与我的代码一起使用?是否可以修改链中对象的内容?当然可以;只需交换我答案中的两个循环;将链移动到下面op out,将每个链应用于文档,内部for循环后的调用
createBOW()
函数,每个链一次。
for chain in chains:
    for doc in documents:
        doc.list_strippedtext = reduce(lambda data, func: func(data), chain, doc.text)
    bow = createBOW(documents)