# Normalise list of tuples in Python. No libraries used.

To normalise the values in a list of tuples with list comprehension, the list needs to be transposed, normalised and transposed back. Here is the code to do that.Here is a list of tuples that need to be normalised:

(2, 10), (3, 15), (4, 16), (5, 20), (6, 45)]The result should be a normalised list of tuples where the data in each column has a value between 0 and 1:

(0.0, 0.0) (0.25, 0.14285714285714285) (0.5, 0.17142857142857143) (0.75, 0.2857142857142857) (1.0, 1.0)]The following function shows how to achieve this with list comprehensions in Python:

def normalise(matrix): transposed = [[row[col] for row in matrix] for col, _ in enumerate(matrix[0])] normalised = [[(v - min(r)) / (max(r) - min(r)) for v in r] for r in transposed] return [tuple([row[col] for row in normalised]) for col, _ in enumerate(normalised[0])]Full code:

def normalise(matrix): transposed = [[row[col] for row in matrix] for col, _ in enumerate(matrix[0])] normalised = [[(v - min(r)) / (max(r) - min(r)) for v in r] for r in transposed] return [tuple([row[col] for row in normalised]) for col, _ in enumerate(normalised[0])] X = [(2, 10), (3, 15), (4, 16), (5, 20), (6, 45)] print(X) print(normalise(X))Ouput:

[(2, 10), (3, 15), (4, 16), (5, 20), (6, 45)] [(0.0, 0.0), (0.25, 0.14285714285714285), (0.5, 0.17142857142857143), (0.75, 0.2857142857142857), (1.0, 1.0)]

Written by

**Loek van den Ouweland**on 2021-10-18. Questions regarding this artice? You can send them to the address below.