Skip to main content
 首页 » 编程设计

python之pop() empty deque() 逻辑

2025年05月04日11webabcd

我希望能够验证括号,以便它们包含并忽略任何类型的字符。只要有效地使用带括号的字符串包围,那么 True 否则为 `False。

我还是 python 的新手,所以我不确定如何为这个特定条件正确创建 if 语句。我正在尝试创建一个 fi 语句,这样当我 .pop() 一个空的 deque() 时,我将能够 return False收到错误消息:

Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
IndexError: pop from an empty deque 

也许有另一种更好的方法来解决这个问题。如果是这样,我很高兴看到其他人如何解决它

例如:

a = 'sdf(sadf(sdf)sdf)sdfsd0sdf)sdf(sdf0)' # false  
b = 'dsf))))(((((dsfsdf' # false 
c = '()()()()'  # true 
d = '((((asd(asd)asd)()()asd))'   # true 

我的代码:

# any letter is ignored 
# jsut make sure that the parenthesis are equal 
 
from collections import * 
 
def str_valid(stringy): 
    param_stack = deque() 
    for n in stringy: 
        if n ==')': 
            param_stack.pop() 
        if n == '(': 
            param_stack.append('(') 
    if param_stack == []: 
        return True 
    else: 
        return False  
 
a = 'sdf(sadf(sdf)sdf)sdfsd0sdf)sdf(sdf0)' # false  
b = 'dsf))))(((((dsfsdf' # false 
c = '()()()()'  # true 
d = '((((asd(asd)asd)()()asd))'   # true 
 
print str_valid(a) 
 
print str_valid(b) 
 
print str_valid(c) 
 
print str_valid(d) 

请您参考如下方法:

如果你只是想要一个 if 语句来检查 deque 在 pop() 之前是否为空,你可以使用

if n ==')': 
    if param_stack: 
        param_stack.pop() 
    else: 
        return false 
... 

if param_stack 会将其隐式转换为 bool 值,如果它包含一些元素则返回 true,否则返回 false。