How could I make this code more effective?  I'm just experimenting and learning the different ways of how Python runs.list=[]original=mkPoint3D(x,y)z1=mkPoint3D(x-d,y)z2=mkPoint3D(x+d,y)z3=mkPoint3D(x,y-d)z4=mkPoint3D(x,y+d)list.append(original)list.append(z1)list.append(z2)list.append(z3)list.append(z4)if(maxPoint(list).z==original.z):    print(The local maximum is at  + (  + str(original.x) +  ,   + str(original.y) +  ) +  =  + str(original.z))elif maxPoint(list).z==z1.z:    hillClimb(z1.x,z1.y,d)elif maxPoint(list).z==z2.z:    hillClimb(z2.x,z2.y,d)elif maxPoint(list).z==z3.z:    hillClimb(z3.x,z3.y,d)elif maxPoint(list).z==z4.z:    hillClimb(z4.x,z4.y,d)
Determine local maximum from given points
python;performance
Don't use list as a variable name, since it is a python function.Don't initialize it a list and append to it, if you canjust create it and populate it with one line.Don't call a function more than once, if you don't need to.Use a loop with a break statement, instead of all the elif statementsoriginal=mkPoint3D(x,y)z1=mkPoint3D(x-d,y)z2=mkPoint3D(x+d,y)z3=mkPoint3D(x,y-d)z4=mkPoint3D(x,y+d)point_list = [original, z1, z2, z3, z4]maxz = maxPoint(point_list).zif maxz == original.z:    print ( The local ...)else:    for next_point in point_list[1:]:        if maxz == next_point.z:            matching_point = next_point            break    hillClimb(matching_point.x, matching_point.y, d)