python - 为什么我在 Python 中的堆栈上出现错误?
问题描述
我已经用 Python 编写了下面的代码,但是每次数组“堆栈”说除了初始分配之外的堆栈时,我都会收到错误。错误是“'list' 的实例没有'push' 成员”。
澄清一下,这段代码是遍历每个字符并检查它是否是一个左括号。它将推入堆栈,左括号,我将通过 if/else 语句进行匹配,以查看它们是否匹配对。如果不匹配,则返回 false。
有谁知道为什么这段代码会在堆栈上出错?堆栈对我来说很新,它们没有意义。这是我用 Python 编写的第一段代码,所以我的语法也可能有错误。
我从堆栈上的视频中获取了代码的建议,并尝试将其翻译成 python 以查看它的工作原理。他们使用的代码只是应该发生的事情的指导。
str = '()[(]())'
arr = ['(','[']
stack = []
for char in str:
if char in arr:
stack.push(char)
else:
if stack.empty():
top = stack.pop()
break
if(top == '[' and char != ']') or (top == '(' and char != ')'):
break
return stack.empty()
解决方案
您的功能无效。python中的List既没有push()
也没有empty()
方法。您应该修改代码以分别使用append()
和len(stack)
而不是这两个。
修改后的代码如下所示 -
str1 = '()[(]())'
str2 = '()[]()'
arr = ['(','[']
def check_parentheses(str):
stack = []
for char in str:
if char in arr:
stack.append(char)
else:
# If our stack is empty, there's no closing bracket to match the opening one, hence invalid
if not stack: # Same as len(stack) == 0
return "Invalid"
else:
# if closing bracket doesn't match opening bracket, then too it's invalid
top = stack.pop()
if(top=='[' and char != ']' or top == '(' and char != ')' ):
return "Invalid"
# If all the above checks are passed, we can be sure that parentheses are valid and balanced :)
return "Valid"
print(check_parentheses(str1))
print(check_parentheses(str2))
输出 :
Invalid
Valid
我建议您参考 python docs - list以获取有关列表的更多信息以及您可以在它们上使用的方法。
希望这可以帮助 !
推荐阅读
- php - 在 PHP 中 JSON 对象的开头和结尾添加单引号
- vue.js - 尝试使用道具将数据传递给全局对象,但无法获取要显示的数据
- r - 如何在 R 的 rugarch 包中使用分布图
- python - 在异步睡眠期间检查新的控制命令
- r - 在练习中创建箱线图
- xamarin - 如何在 Xamarin Forms 中以适当的图像比例在 UWP 中设置 SpashScreen?
- javascript - 编写一个满足以下测试的函数 f
- ios - NSInvalidArgumentException:Workout_Tracker.QuickAddViewController collectionView:numberOfItemsInSection:]:无法识别的选择器发送到实例
- vba - Excel - 在单独的工作表中输入 A 列的值时,粘贴 2 列引用的 B 列的值
- react-native - Expo React Native - 构建 apk 后组件切换位置/使用 QR 码打开