From 3f445cb14eea7767dda1df7bc982072c4f03adaf Mon Sep 17 00:00:00 2001 From: Grant Sanderson Date: Tue, 6 Feb 2018 12:23:01 -0800 Subject: [PATCH] Make remove_list_redundancies keep last-most occurance of an element rather than the first occurance --- helpers.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/helpers.py b/helpers.py index ee3c15da..0c97c556 100644 --- a/helpers.py +++ b/helpers.py @@ -199,14 +199,16 @@ def bezier(points): def remove_list_redundancies(l): """ Used instead of list(set(l)) to maintain order + Keeps the last occurance of each element """ - result = [] + reversed_result = [] used = set() - for x in l: + for x in reversed(l): if not x in used: - result.append(x) + reversed_result.append(x) used.add(x) - return result + reversed_result.reverse() + return reversed_result def list_update(l1, l2): """ @@ -649,8 +651,8 @@ def angle_between_vectors(v1, v2): return np.arccos(np.dot(v1,v2)/(l1*l2)) def project_along_vector(point, vector): - matrix = np.eye(3) - np.outer(vector,vector) - return np.dot(point,matrix.T) + matrix = np.identity(3) - np.outer(vector, vector) + return np.dot(point, matrix.T) def concatenate_lists(*list_of_lists): return [item for l in list_of_lists for item in l]