从函数/类返回后如何使列表为空

时间:2019-04-08 01:20:49

标签: python python-3.x

让我们想象。我们有以下2个课程, class ONE仅返回class TWO产生的输出列表。这里的问题是我想在final_issues返回列表后清除/清空class ONE列表,以便它不会在第二轮输出重复的条目。

final_issues = []

class ONE:
    def out(self):
        if final_issues:
            return final_issues
            ###! HERE i want to make `final_issues` empty

class TWO:
    def __init__(self):
        for i in range(5):
            final_issues.append(i)

First Iteration:

TWO()
final_issues
>> [0, 1, 2, 3, 4]
x = ONE()
x.out()
>> [0, 1, 2, 3, 4]

Second Iteration

TWO()
final_issues 
>> [0, 1, 2, 3, 4, 0, 1, 2, 3, 4] 
x = ONE()
x.out()
>> [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]

我想在TWO()类的每次迭代后清除列表,以免将结果附加到先前的final_issues列表中

请注意:final_issues在“我的实际问题”中不包含整数(每次都是唯一的值),出于演示目的,我以整数为例。

1 个答案:

答案 0 :(得分:3)

您可以执行以下操作,使用final_issues_copy = final_issues[:]复制列表以稍后返回,然后clear()创建原始列表(仅适用于Python 3-对于Python 2,您可以使用{{1} }代替del final_issues[:]

final_issues.clear()

但是(我理解这只是一个示例,而不是您的实际代码),我通常会警告不要在类之间操纵此类“全局”变量。