我需要这个代码的帮助。我希望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。我不知道这是否足够清楚以寻求帮助?
答案 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