堆叠逆矩阵

时间:2018-11-24 00:37:40

标签: python list matrix stack reverse

我正在尝试按矩阵堆叠和反向堆叠矩阵,并像坐在盒子里一样显示它:

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 |

因此,每次我弹出行时,顶部位置都会移动到下一个位置,直到堆栈为空。

1 个答案:

答案 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保持一致。)