(Python)在python中使用pop取第一个元素打印它,然后将其放在列表的底部
问题描述:
我是python的新手,我不知道是否可以旋转我的堆栈结构。(Python)在python中使用pop取第一个元素打印它,然后将其放在列表的底部
我的代码:
class Stack():
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def push(self, item):
return self.items.append(item)
def printstack(self):
for items in reversed(self.items):
print items
def pop(self):
NS=Stack()
var1=self.items.pop()
NS.push(var1)
NS.push(self)
self=NS
return var1
def size(self):
return len(self.items)
s=Stack()
print s.isEmpty()
print ''
s.push(4)
s.push('dog')
s.push(6)
s.push('Bob')
print s.isEmpty()
print ''
s.printstack()
print ''
print s.pop()
print ''
s.printstack()
我所试图做的是自定义弹出堆栈中弹出并把教皇变量堆栈类似下面的结尾:
True
False
Bob
6
dog
4
Bob
6
dog
4
Bob
但是我得到这个:
True
False
Bob
6
dog
4
Bob
6
dog
4
帮助?
答
pop
在数据结构中已经有了独特的含义;如果您更改了操作,则稍后会出现通信故障。相反,请将操作命名为:rotate
。
由于底层结构是一个简单的列表,你可以用切片做到这一点很容易:
items = items[1:] + [items[0]]
更新后评论
我不知道你会如何需要一个for循环。 Python有许多方便的内置操作和方法来避免这些困难。如果您对学习更多数据结构感到满意,绝对可以采用Aaron的建议并了解系列产品包。有字典与计数器和排序属性,链接列表类型的序列,以及很多良好的支持功能。
如果你这样做,它不再是一个堆栈。 – user2357112
但是我的知识中列表不起作用,因为你必须旋转所有的元素,所以没有一个堆栈已经是一个更好的选择? – Asilver
“更好”以什么方式?你只是重塑了一枚戒指。另外请注意,你的** Stack ** *是一个列表 - 你没有保存任何处理。 – Prune