我正在尝试按矩阵堆叠和反向堆叠矩阵,并像坐在盒子里一样显示它:
stack=[]
x=int(input("Enter size of stack :"))
Top=-1
for i in range(x):
Top+=1
stack.append(int(input("Top is in {} position\nEnter stack item :".format(i))))
print("stack=",stack)
print("|",stack[Top],"|","==>Top")
for i in range(len(stack)-1):
Top-=1
print("|",stack[Top],"|")
rev=[]
rev_top=-1
for x in range(-1,-len(stack)-1,-1):
rev.append(stack[x])
rev_top+=1
print("stack recerse =",rev)
看跌期权:
|7 4 5 |==>Top
|3 5 9 |
|2 4 5 |
|4 5 2 |
我希望这是相反的
|4 5 2 | ==>Top
|2 4 5 |
|3 5 9 |
|7 4 5 |
因此,每次我弹出行时,顶部位置都会移动到下一个位置,直到堆栈为空。
答案 0 :(得分:0)
首先,而不是使用相对较长的代码来反转stack
列表中的元素
rev=[]
rev_top=-1
for x in range(-1,-len(stack)-1,-1):
rev.append(stack[x])
rev_top+=1
您可以使用内置函数reversed()
:
rev = list(reversed(stack)) # list() is used because reversed() returns an iterator
或者-甚至更好-使用stack
方法将reverse()
列表反转到位:
stack.reverse() # Note: Do NOT use something as stack = stack.reverse() - you will get Null
现在,您可以使用程序中的相同代码来很好地打印反转的堆栈,即。 e。部分
top = -1
print("|", stack[top], "|", "==>Top")
for i in range(len(stack) - 1):
top -= 1
print("|", stack[top], "|")
(我在上面加上了一些空格符号,并将变量名Top
更改为top
以与PEP 8 - Style Guide for Python Code保持一致。)