I was surprised that lists doesn't have something like this already.