推送并弹出新列表

2024-09-25 18:12:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图做一个循环,如果程序看到一个letternumber,它将把(x)推到一个新列表中,如果它看到一个星号*,它必须弹出()。它更像是一种堆栈算法,其中输入的第一个字母或数字是输出的最后一个字母或数字。菲罗先进后出

比如说

如果程序被赋予以下数组

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"]

我如何实现这一点


Tags: 程序算法number列表堆栈字母数字数组
2条回答

一个简单的解决方案是:

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

这应该起作用:

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']

相关问题 更多 >