推送并弹出到新列表
pushing and poping into new list
我正在尝试做一个循环,如果程序看到 letter
或 number
它将把 (x) 推入一个新列表,如果它看到星号 * 它必须弹出( ).它更像是一种堆栈算法,其中第一个字母或数字是最后一个。 FILO 先进后出
例如
如果给程序如下数组
inputVals = ["1", "2" ,"*" ,"3", "4", "*" ,"*", "*" ,"5", "6"]
应该输出
outputVal = ["2" ,"4", "3" ,"1"]
或字母输入
inputLetter = ["f" ,"a", "*", "d" ,"e" ,"t" ,"*" ,"o", "*" ,"*" ,"*" ,"*"]
字母输出
outPutLetter = ["a" ,"t", "o", "e" ,"d" ,"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
我正在尝试做一个循环,如果程序看到 letter
或 number
它将把 (x) 推入一个新列表,如果它看到星号 * 它必须弹出( ).它更像是一种堆栈算法,其中第一个字母或数字是最后一个。 FILO 先进后出
例如
如果给程序如下数组
inputVals = ["1", "2" ,"*" ,"3", "4", "*" ,"*", "*" ,"5", "6"]
应该输出
outputVal = ["2" ,"4", "3" ,"1"]
或字母输入
inputLetter = ["f" ,"a", "*", "d" ,"e" ,"t" ,"*" ,"o", "*" ,"*" ,"*" ,"*"]
字母输出
outPutLetter = ["a" ,"t", "o", "e" ,"d" ,"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