如何保留附加到python列表的值

时间:2018-06-21 21:41:46

标签: python list

我需要这个代码的帮助。我希望mylist在下次调用函数'no_repeat_rule'时保留附加到它的值。我是python的新手。我的代码如下:

def no_repeat_rule(play_board):

    mylist = list()
    if seeds_left(play_board) == 2 and sum(play_board[:6])== 1:
        mylist.append(play_board)
        return mylist

此代码的输出(部分)为: ...

[[1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]]

Player 1 chose cup  0

[[0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]]

Player 2 chose cup 6

[[0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]]

...

我希望功能'no_repeat_rule'要做的是每次播放玩家时增加mylist。我不知道这是否足够清楚以寻求帮助?

2 个答案:

答案 0 :(得分:0)

最简单的方法是在函数定义中添加另一个参数,使其看起来像:

def no_repeat_rule(play_board, aList):

在调用函数之前,请在函数外部声明一个列表。将此值设置为等于函数的结果,并在调用函数时将其作为参数传递。例如:

x = list()

def no_repeat_rule(play_board, aList):

    myList = aList
    if seeds_left(play_board) == 2 and sum(play_board[:6])== 1:
        myList.append(play_board)
        return myList

x = no_repeat_rule(someBoardHere, x)

如果我了解您的要求,我相信这应该可以工作。如果没有,请回复,我会尝试其他方法。

答案 1 :(得分:0)

您需要的是一个与功能关联的对象。它调用属性。在python中非常方便。

您的代码可能如下所示:

def no_repeat_rule(play_board):
    if not hasattr(no_repeat_rule,"mylist"):
        no_repeat_rule.mylist = []
    if seeds_left(play_board) == 2 and sum(play_board[:6])== 1:
        no_repeat_rule.mylist.append(play_board)
        return no_repeat_rule.mylist

我无法检查此代码,但它应适用于本地属性。顺便说一句,它适用于python 2.7