(Python)使用Python中的pop获取第一个元素,打印它,然后将它放在列表的底部

(Python)使用Python中的pop获取第一个元素,打印它,然后将它放在列表的底部,python,stack,Python,Stack,我是python新手,不知道是否可以旋转我的堆栈结构 我的代码: 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):

我是python新手,不知道是否可以旋转我的堆栈结构

我的代码:

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()  
我试图做的是自定义堆栈中的pop,使其成为pop,并将pope变量放置在堆栈的末尾,如下所示:

True

False

Bob  
6  
dog  
4  

Bob  

6  
dog  
4  
Bob  
但我得到的是:

True

False

Bob  
6  
dog  
4  

Bob  

6  
dog  
4  

帮助?

pop
在数据结构中已经有了独特的含义;如果您更改操作,以后将出现通信问题。相反,将操作命名为:a
rotate

由于底层结构只是一个列表,因此您可以很容易地使用切片来实现这一点:

items = items[1:] + [items[0]]
评论后更新


我不确定你需要一个for循环。Python有许多方便的内置操作和方法来避免这些困难。如果您对学习更多的数据结构感到满意,那么一定要接受Aaron的建议,并了解集合包。有些字典具有计数器和排序属性、序列的链表类型以及许多良好的支持功能。

pop
在数据结构中已经有了独特的含义;如果您更改操作,以后将出现通信问题。相反,将操作命名为:a
rotate

由于底层结构只是一个列表,因此您可以很容易地使用切片来实现这一点:

items = items[1:] + [items[0]]
评论后更新


我不确定你需要一个for循环。Python有许多方便的内置操作和方法来避免这些困难。如果您对学习更多的数据结构感到满意,那么一定要接受Aaron的建议,并了解集合包。有一些字典具有计数器和排序属性、序列的链表类型以及许多良好的支持功能。

如果你这样做,它就不再是堆栈了。但据我所知,列表不起作用,因为你必须旋转所有元素,那么一个已经存在的堆栈不是更好的选择吗?你只是在重塑一枚戒指。另外,请注意,堆栈是一个列表——您没有保存任何处理。因为在列表中,您必须旋转每个元素。list=A-B-C-D-E-F for循环做list=B-C-D-E-F-A在堆栈中你可以做pop,它给你这个堆栈=A-B-C-D-E-F pop()堆栈=B-C-D-E-F堆栈。附加(A)=B-C-D-E-F-A比其他替代方法节省更多的时间我一点也不清楚“旋转每个元素”是什么意思。如果你这样做,它不再是一个堆栈了。但据我所知,列表不起作用,因为你必须旋转所有元素,那么一个已经存在的堆栈不是更好的选择吗?以什么方式更好?你只是在重塑一枚戒指。另外,请注意,堆栈是一个列表——您没有保存任何处理。因为在列表中,您必须旋转每个元素。list=A-B-C-D-E-F for循环做list=B-C-D-E-F-A在堆栈中你可以做pop,它给你这个堆栈=A-B-C-D-E-F pop()堆栈=B-C-D-E-F堆栈。附加(A)=B-C-D-E-F-A比其他替代方法节省更多的时间我一点也不清楚“旋转每个元素”是什么意思。谢谢Liam,这方面我还是新手,但我的教授让它看起来不可能,因为ud需要一个for循环,我很困惑,所以我认为可以使用堆栈。您应该添加
集合。deque
有一个循环method@AaronHall:是,deque(双端队列)有一个
rotate
方法。这对现在的学习有很大的帮助。我只是保持简单。谢谢Liam,这还是个新手,但我的教授让这看起来不可能,因为ud需要一个for循环,我很困惑,所以我认为堆栈可以满足您的需要,您应该添加
集合。deque
有一个循环method@AaronHall:是,deque(双端队列)有一个
rotate
方法。这对现在的学习有很大的帮助。我只是保持简单。