I have nothing particularly useful to add, only that this is potentially a really fantastic idea with a lot of promise, IMO.
It would be nice to have some view objects with a lot of functionality that can be sliced not only for efficiency, but for other purposes. One might be (note that below I am assuming that slicing a view returns another view):
nodes = [(0,0), (1,0), (1,1), (1,0)]
triangle1 = [view_of_node_idx0, view_of_node_idx1, view_of_node_idx3]
triangle2 = [view_of_node_idx1, view_of_node_idx2, view_of_node_idx3]
Now if I move the node locations, the triangles reflect the update:
nodes[:] = (1,1), (2,1), (2,2), (2,1)