I have a list of coordinates, but I want to format them so they form a grid. Right now, for every element of the list, I’m checking what its value is and then formatting it. Is there a smarter, more efficient way to do this?
def convertDataToCoords(xCoords, yCoords): xSorted = [] ySorted = [] for y in yCoords: if y >= 0 and y <= 175: ySorted.append(150) elif y > 175 and y <= 275: ySorted.append(230) elif y > 275 and y <= 350: ySorted.append(310) elif y > 350 and y <= 450: ySorted.append(400) elif y > 450 and y <= 525: ySorted.append(480) elif y > 525 and y <= 600: ySorted.append(575) elif y > 600 and y <= 700: ySorted.append(650) elif y > 700 and y <= 775: ySorted.append(732.5) elif y > 775 and y <= 860: ySorted.append(830) elif y > 860 and y <= 950: ySorted.append(900) elif y > 950 and y <= 1050: ySorted.append(1000) else: ySorted.append(1090) for x in xCoords: if x >= 0 and x <= 150: xSorted.append(130) elif x > 150 and x <= 250: xSorted.append(230) elif x > 250 and x <= 350: xSorted.append(330) elif x > 350 and x <= 450: xSorted.append(430) elif x > 450 and x <= 550: xSorted.append(530) elif x > 550 and x <= 650: xSorted.append(630) elif x > 650 and x <= 750: xSorted.append(730) else: xSorted.append(830)
Advertisement
Answer
You can replace if-else
with the list of min, max and expected values:
X = [(0, 150, 130), (150, 250, 230), (250, 350, 330)] Y = [(0, 175, 150), (175, 275, 230), (275, 350, 310)] def convert(coords, items): result = [] for coord in coords: for min_, max_, exp in items: if min_ < coord < max_: result.append(exp) return result x_sorted = convert([100, 200, 300], X) y_sorted = convert([50, 150, 250], Y)