If you didn't know, range objects already support most non-mutating list methods:

    >>> fakelist = range(1, 101)
    >>> fakelist[-1]
    100
    >>> fakelist[-10:]
    range(91, 101)
    >>> 50 in fakelist
    True
    >>> fakelist.index(50)
    49

Range objects are more efficient than lists since they use O(1) memory instead of O(n), and many of the methods take O(1) time instead of O(n).