gpt4 book ai didi

python - pop() empty deque() 逻辑

转载 作者:太空宇宙 更新时间:2023-11-04 07:01:50 25 4
gpt4 key购买 nike

我希望能够验证括号,以便它们包含并忽略任何类型的字符。只要有效地使用带括号的字符串包围,那么 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。

关于python - pop() empty deque() 逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19418249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com