Постепенно вызывать функции из списка функций (без генератора) - PullRequest
0 голосов
/ 02 февраля 2019

У меня проблема с включением функций в списке в палач.Вот пример кода проблемы - сокращенно из-за его длины:

board=[]#A matrix to which I append required letters

def func(list1):
    does sth with list1
    return list1

def func2(list2):
    does sth with list2
    return list2

def func3(list3):
    does sth with list3
    return list3

f1=func(board)
f2=func2(f1)
f3=func3(f2)

list_of_func=[f1, f2, f3]
count=0

if sth happens:
     print(list_of_func[count])
     count+=1

Однако он не печатает доску, измененную пошагово, а полностью измененную доску - измененную всеми функциями.Как я могу остановить Python от изменения всей платы?

1 Ответ

0 голосов
/ 02 февраля 2019

Вы передаете ссылку на тот же список в ваших функциях.Это означает, что список, который вы изменили в func(), тот же, что и в других функциях.

Вы можете создавать копии списка, поэтому вы сохраняете копию списка после каждого шага.Вы можете использовать нотацию среза для достижения этого:

f1 = func(board[:])
f2 = func2(f1[:])
f3 = func3(f2[:])

или list() встроенный:

f1 = func(list(board))
f2 = func2(list(f1))
f3 = func3(list(f2))

Таким образом, f1, f2 и f3каждый из них будет содержать ссылку на свой список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...