Перенос стека в другой стек в python - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь поместить содержимое стека A в стек B. Также я хочу сохранить порядок обоих стеков.Для этого я хотел использовать стек C. Я попытался сделать это в следующей функции:

class Stack:
    ...

    def pop(self):
        self.items.pop()
        self.topindex -= 1
        return self

    def some_func(A, B, C):
        for item in A.items:
            while A.topindex is not 0:
                A.push(A.pop(item), C)
        for items in C.items:
            while C.topindex is not 0:
                C.push(C.pop(item), B)
    ...

topindex - это индекс последнего элемента в стеке.Если в стеке 2 элемента, topindex будет равен 2.

Однако при выполнении выдается ошибка: TypeError: pop () принимает 1 позиционный аргумент, но 2 были заданы

Я также пытался использоватьэтот пост ( Поместите стек в другой стек ) для справки, но это тоже не сработало для меня, в основном потому, что я ничего не знаю о c #.

Любая помощь оченьоценили.

1 Ответ

0 голосов
/ 23 ноября 2018

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

>>> a = [1,2,3]
>>> b = []
>>> c = []
>>> while a:
    c.append(a.pop())


>>> c
[3, 2, 1]
>>> while c:
    b.append(c.pop())


>>> b
[1, 2, 3]
>>> a
[]
>>> c
[]

Существуют более простые способы манипулирования списками., но выше показано, как вы бы перемещали элементы стека, используя только push (append) /pop.

Ваша реализация стека должна иметь эквивалент .append() и .pop(), и какой-то способ сказатьесли он пуст для завершения цикла while.

...