line 47, in init_show_chart self.lineList = Global.NotTerminal[:] TypeError: 'set' object is not subscriptable
时间: 2024-02-09 13:13:38 浏览: 75
这个错误提示表明,在代码的第 47 行,你试图对一个 set 类型的变量进行切片操作,而 set 类型是不支持切片操作的,因此出现了 TypeError 错误。
解决这个问题的方法有两种:
1. 将 set 类型的变量转换为 list 类型,然后再进行切片操作。可以使用 list() 函数将 set 转换为 list,例如:
```
self.lineList = list(Global.NotTerminal)[:]
```
2. 直接使用 set 类型的变量进行处理,不进行切片操作。如果不需要对变量进行切片操作,可以直接使用 set 类型的变量,例如:
```
self.lineList = Global.NotTerminal
```
根据实际需要选择适合的方法即可。
相关问题
line 47, in init_show_chart self.lineList.add(nv) AttributeError: 'list' object has no attribute 'add'
这个错误提示表明,在代码的第 47 行,你试图对一个 list 类型的变量使用 add() 方法,而 list 类型是不支持 add() 方法的,因此出现了 AttributeError 错误。
可能的原因是在前面的代码中,你将一个 set 类型的变量转换为了 list 类型,然后尝试在 list 类型的变量上使用 set 类型的方法。要解决这个问题,可以考虑将 list 类型的变量转换回 set 类型,或者直接使用 set 类型的变量。
解决这个问题的方法有两种:
1. 将 list 类型的变量转换为 set 类型,然后再使用 add() 方法。可以使用 set() 函数将 list 转换为 set,例如:
```
self.lineList = set(Global.NotTerminal)
self.lineList.add(nv)
```
2. 直接使用 set 类型的变量进行处理,不进行转换操作。如果不需要使用 list 类型的方法,可以直接使用 set 类型的变量,例如:
```
self.lineList = Global.NotTerminal
self.lineList.add(nv)
```
根据实际需要选择适合的方法即可。
把c#函数用python重写 #region 测深垂线间平均水深、测深垂线间间距、测深垂线间水道断面面积计算 private void CalculateBetweenDepthLine_AvgDepth_Gap_Area() { for (int i = 0; i < ResultLineList.Count; i++) { if (ResultLineList[i].VLineOrder == -9999) { ResultLineList[i].AvgDepthBetweenDLine = null;//(float)Math.Round((result_LineList[i - 1].Depth + result_LineList[i].Depth) / 2f, 2); ResultLineList[i].GapBetweenDLine = null;//(float)Math.Round(result_LineList[i].InitPointDistance - result_LineList[i-1].InitPointDistance, 1); ResultLineList[i].AreaBetweenDLine = null;// result_LineList[i].AvgDepthBetweenDLine * result_LineList[i].GapBetweenDLine; } else { ResultLineList[i].AvgDepthBetweenDLine = NumValid.PrecisionConvert_Depth((ResultLineList[i - 1].Depth + ResultLineList[i].Depth) / 2f); ResultLineList[i].GapBetweenDLine = NumValid.PrecisionConvert_Width(ResultLineList[i].InitPointDistance - ResultLineList[i - 1].InitPointDistance); ResultLineList[i].AreaBetweenDLine = NumValid.PrecisionConvert_Area((double)(ResultLineList[i].AvgDepthBetweenDLine * ResultLineList[i].GapBetweenDLine)); } } } #endregion
def calculate_between_depth_line_avg_depth_gap_area(result_line_list):
for i in range(len(result_line_list)):
if result_line_list[i].VLineOrder == -9999:
result_line_list[i].AvgDepthBetweenDLine = None
result_line_list[i].GapBetweenDLine = None
result_line_list[i].AreaBetweenDLine = None
else:
result_line_list[i].AvgDepthBetweenDLine = NumValid.PrecisionConvert_Depth((result_line_list[i - 1].Depth + result_line_list[i].Depth) / 2)
result_line_list[i].GapBetweenDLine = NumValid.PrecisionConvert_Width(result_line_list[i].InitPointDistance - result_line_list[i - 1].InitPointDistance)
result_line_list[i].AreaBetweenDLine = NumValid.PrecisionConvert_Area(float(result_line_list[i].AvgDepthBetweenDLine * result_line_list[i].GapBetweenDLine))
阅读全文