Remember when you obtain a parameter with GetParameterAsText you get it as text, when you use GetParameter you will directly have a list of numeric values. To explain this a little more, please see the example below:
In my tool I collect a list of values:

The script below contains this:
def main():
    import arcpy
    sea_level = arcpy.GetParameterAsText(0)
    arcpy.AddMessage("\nGetParameterAsText(0)")
    arcpy.AddMessage("sea_level={0}".format(sea_level))
    arcpy.AddMessage("type={0}".format(type(sea_level)))
    lst_sea_level = sea_level.split(";")
    arcpy.AddMessage("lst_sea_level={0}".format(lst_sea_level))
    arcpy.AddMessage("type of first element={0}".format(type(lst_sea_level[0])))
    lst_values = [int(v) for v in lst_sea_level]
    arcpy.AddMessage("lst_values={0}".format(lst_values))
    arcpy.AddMessage("type of first element={0}".format(type(lst_values[0])))
    lst_sea_level = arcpy.GetParameter(0)
    arcpy.AddMessage("\nGetParameter(0)")
    arcpy.AddMessage("lst_sea_level={0}".format(lst_sea_level))
    arcpy.AddMessage("type of first element={0}".format(type(lst_sea_level[0])))
if __name__ == '__main__':
    main()
In the first part it reads the parameter as text and you can see how it is processed to get a list of values. In the second part starting on line 19, I read the same parameter but now directly as a list without converting it to string. The result is this:

In your case it will be much easier to use GetParameter then using GetParameterAsText.