Global.Terminal.removeAll(Global.NotTerminal);改为python
时间: 2023-11-18 12:03:37 浏览: 27
在 Python 中,集合(set)没有 removeAll() 方法。如果你想要删除一个集合中另一个集合中的元素,可以使用差集(difference)操作。例如,如果你想要从集合 Global.Terminal 中删除集合 Global.NotTerminal 中的元素,可以使用以下代码:
```
Global.Terminal -= Global.NotTerminal
```
这个操作会从 Global.Terminal 集合中删除所有与 Global.NotTerminal 集合中相同的元素。
相关问题
Global.firstMap.get(str)改为python
在 Python 中,可以使用以下代码获取名为 firstMap 的字典类型变量中,键为 str 对应的值:
```
value = Global.firstMap.get(str)
```
其中,get() 方法用于获取字典中指定键对应的值,如果该键不存在则返回 None。因此,上述代码将返回 firstMap 中键为 str 对应的值,并赋值给变量 value。
需要注意的是,在 Python 中,字典类型变量的访问方式为使用 [] 运算符来访问键对应的值,例如:
```
value = Global.firstMap[str]
```
这种方式同样可以获取字典中指定键对应的值,但如果该键不存在则会抛出 KeyError 异常。如果不希望出现异常,可以使用 get() 方法来获取字典中指定键对应的值。
public void initGrammar(BufferedReader bufferedReader){ String line = ""; try { line = bufferedReader.readLine(); String[] temp = line.split(" "); Global.NotTerminal.add(temp[0]); Production sproduction = new Production(temp[0]); for(int i = 2;i<temp.length;i++){ Global.Terminal.add(temp[i]); sproduction.right.add(temp[i]); } Global.productionList.add(sproduction); Global.start = temp[0]; while ((line = bufferedReader.readLine()) != null){ temp = line.split(" "); Global.NotTerminal.add(temp[0]); Production production = new Production(temp[0]); for(int i = 2;i<temp.length;i++){ Global.Terminal.add(temp[i]); production.right.add(temp[i]); } Global.productionList.add(production); } Global.Terminal.removeAll(Global.NotTerminal); }catch (Exception e){ e.printStackTrace(); } }转python
以下是将该Java方法转换为Python函数的示例代码:
```python
def initGrammar(bufferedReader):
line = ""
try:
line = bufferedReader.readline()
temp = line.split(" ")
Global.NotTerminal.add(temp[0])
sproduction = Production(temp[0])
for i in range(2, len(temp)):
Global.Terminal.add(temp[i])
sproduction.right.add(temp[i])
Global.productionList.add(sproduction)
Global.start = temp[0]
while line:
line = bufferedReader.readline()
if not line:
break
temp = line.split(" ")
Global.NotTerminal.add(temp[0])
production = Production(temp[0])
for i in range(2, len(temp)):
Global.Terminal.add(temp[i])
production.right.add(temp[i])
Global.productionList.add(production)
Global.Terminal.difference_update(Global.NotTerminal)
except Exception as e:
print(e)
```
在这个Python函数中,我们使用了类似于Java方法的结构。我们首先定义了一个变量`line`,并设置为空字符串。然后,我们使用`try-except`语句块来捕获可能发生的异常。
在`try`块中,我们首先读取`bufferedReader`对象中的第一行,并将其拆分为一个非终结符和一系列终结符。然后,我们将这些符号添加到全局符号表中,并创建一个产生式对象,将其左部设置为该非终结符,并将其右部设置为这些终结符。接着,我们将该产生式对象添加到全局产生式列表中,并将该非终结符设置为起始符号。
接下来,我们使用一个`while`循环来读取每一行,并重复上述过程,将每个新的产生式对象添加到全局产生式列表中。最后,我们从全局终结符集合中删除所有的非终结符。
与Java方法不同的是,我们在Python函数中使用了`range()`函数来生成一个范围,以便迭代字符串中的每个元素。此外,我们使用了`Global.Terminal.difference_update()`方法来删除非终结符。