推送并弹出新列表

问题描述

我正在尝试进行一个循环,如果程序看到letternumber,它将把(x)推入新列表,如果看到星号*,则必须pop()。它更多是一种堆栈算法,其中第一个字母或数字是最后一个。 FILO先进先出

例如

如果程序具有以下数组

inputVals = ["1","2","*","3","4","5","6"]

它应该输出

outputVal = ["2","1"]

或字母输入

inputLetter = ["f","a","d","e","t","o","*"]

字母输出

outPutLetter = ["a","f"]

我该如何实现?

解决方法

这应该有效:

def foo(input_list):
    result = []
    stack = []
    for i in input_list:
        if i == "*":
            result.append(stack.pop())
        else:
            stack.append(i)
    return result

print(foo(["1","2","*","3","4","5","6"]))
print(foo(["f","a","d","e","t","o","*"]))
['2','4','3','1']
['a','t','o','e','d','f']
,

一个简单的解决方案是:

def asteriks_popping(list_in):
    result_list = []
    tmp_list = []
    for item in list_in:
        if item == '*':
            result_list.append(tmp_list.pop())
        else:
            tmp_list.append(item)

    return result_list