用python翻译index = ResultLineList.IndexOf(vLines[i]);
时间: 2024-03-19 12:45:20 浏览: 9
在Python中,List对象没有内置的IndexOf()方法,但可以使用index()方法来实现相同的功能。因此,将C#代码转换为Python代码可以写成:
```
try:
index = ResultLineList.index(vLines[i])
except ValueError:
index = -1
```
这里使用了try-except语句,以处理在List中找不到元素时引发的ValueError异常。如果找到了元素,index()方法会返回元素的索引位置,否则将index设置为-1。
相关问题
把c#代码转为python c#代码private void CalculatePartial_AvgVelocity_Width() { int index = -1; List<Result_Line> vLines = ResultLineList.Where(line => line.VLineOrder != null).ToList(); for (int i = 0; i < vLines.Count; i++) { index = ResultLineList.IndexOf(vLines[i]); if (vLines[i].VLineOrder == -9999) { continue; } else if (vLines[i - 1].VLineOrder == -9999) { //float leftAlpha = GetInshoreCoefficient(-9999, vLines[i].WaterLvl); float leftAlpha = NumValid.PrecisionConvert_Coefficient(GetInshoreCoefficient(-9999, vLines[i - 1].InitPointDistance)); vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity((float)(leftAlpha * vLines[i].AvgVelocity)); } else if (vLines[i].VLineOrder == 9999) { //float rightAlpha = GetInshoreCoefficient(9999, vLines[i].WaterLvl); float rightAlpha = NumValid.PrecisionConvert_Coefficient(GetInshoreCoefficient(9999, vLines[i].InitPointDistance)); vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity((float)(rightAlpha * vLines[i - 1].AvgVelocity)); } else { var temp = (vLines[i - 1].AvgVelocity + vLines[i].AvgVelocity) / 2f; vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity((float)temp); } ResultLineList[index] = vLines[i]; ResultLineList[index].WidthBetweenVLine = NumValid.PrecisionConvert_Width(vLines[i].InitPointDistance - vLines[i - 1].InitPointDistance); } }
将C#代码转换为Python代码如下:
def CalculatePartial_AvgVelocity_Width():
index = -1
vLines = list(filter(lambda line: line.VLineOrder != None, ResultLineList))
for i in range(len(vLines)):
index = ResultLineList.index(vLines[i])
if vLines[i].VLineOrder == -9999:
continue
elif vLines[i - 1].VLineOrder == -9999:
leftAlpha = NumValid.PrecisionConvert_Coefficient(GetInshoreCoefficient(-9999, vLines[i - 1].InitPointDistance))
vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity(float(leftAlpha * vLines[i].AvgVelocity))
elif vLines[i].VLineOrder == 9999:
rightAlpha = NumValid.PrecisionConvert_Coefficient(GetInshoreCoefficient(9999, vLines[i].InitPointDistance))
vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity(float(rightAlpha * vLines[i - 1].AvgVelocity))
else:
temp = (vLines[i - 1].AvgVelocity + vLines[i].AvgVelocity) / 2.0
vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity(float(temp))
ResultLineList[index] = vLines[i]
ResultLineList[index].WidthBetweenVLine = NumValid.PrecisionConvert_Width(vLines[i].InitPointDistance - vLines[i - 1].InitPointDistance)
用python翻译List<Result_Line> vLines = ResultLineList.Where(line => line.VLineOrder != null).ToList();
这段代码的意思是:在ResultLineList中筛选出VLineOrder不为null的Result_Line对象,并将其转换为List类型,存储在vLines变量中。
对应的Python代码如下:
```
vLines = [line for line in ResultLineList if line.VLineOrder is not None]
```
其中,通过列表推导式实现了对ResultLineList的筛选和转换操作,判断VLineOrder是否为None的语法为`is not None`。