问题描述
我正在尝试进行一个循环,如果程序看到letter
或number
,它将把(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