*Memo:
- My post explains a range (2).
- My post explains range functions.
- My post explains a range shallow and deep copy.
- My post explains a list (1).
- My post explains a tuple (1).
- My post explains a set (1).
- My post explains a frozenset (1).
- My post explains a dictionary (1).
- My post explains an iterator (1).
- My post explains a string (1).
- My post explains a bytes (1).
- My post explains a bytearray (1).
- My post explains enumerate().
- My post explains zip().
A range:
- is the ordered immutable(hashable) collection of zero or more numbers whose type is
range:- Ordered means that the order of the numbers in a range is kept so it guarantees that the order is always the same unless someone or something changes it.
- Immutable(Hashable) means the numbers of a range cannot be changed.
- can be used with len() to get the length.
- is
Falseif it's empty. - can be checked if a specific number is in the range with
inkeyword. - can be checked if the range is referred to by two variables with
iskeyword. - and one or more ranges cannot be concatenated with
+and|. - cannot be enlarged with
*and a number. - can be iterated with a
forstatement. - can be unpacked with an assignment and
forstatement, function and*but not with**. - can be created by range().
- can be big because it's the special object which always uses small memory not to get
MemoryErrorand it's not an iterator. - can be read by indexing and slicing.
- cannot be changed by indexing, slicing and a del statement.
- can be continuously used through multiple variables.
- can be shallow-copied only by slicing but not by copy.copy().
- cannot be deep-copied and even shallow-copied by copy.deepcopy().
Even a big range doesn't get MemoryError.
MemoryError.range() can create a range between [start, stop) as shown below:
*Memo:
- The 1st argument is
startorstop(Required-Type:int):- It's a start index(inclusive) or stop index(exclusive).
- Don't use
start=orstop=.
- The 2nd argument is
stop(Optional-Type:int):- It's a stop index(exclusive).
- Don't use
stop=.
- The 3rd argument is
step(Optional-Default:1-Type:int):- It's the interval of elements.
- It cannot be
0. - Don't use
step=.
- Only if one argument is set, the 1st argument is
stop, creating the range between[0, stop).
# Empty range
v = range(0)
v = range(0, 0)
v = range(0, 0, 1)
v = range(5, 5)
v = range(5, 5, 1)
v = range(-10)
v = range(10, -10)
v = range(-10, 10, -3)
v = range(10, -10, 3)
# No error
v = range(5)
v = range(0, 5)
v = range(0, 5, 1)
v = range(-10, 10, 3)
v = range(10, -10, -3)
# No error
v = range(100000000)
print(len(range(5)))
for x in range(5): pass
v1, v2, v3 = range(3)
v1, *v2, v3 = range(6)
for v1, v2, v3 in [range(3), range(3, 6)]: pass
for v1, *v2, v3 in [range(6), range(6, 12)]: pass
print(*range(4), *range(4, 6))
print([*range(4), *range(4, 6)])
# No error
v = range(0, 5, 0)
v = range(3) + range(2) + range(4)
v = range(3) | range(2) | range(4)
v = range(5) * 3
# Error
A range is the ordered immutable(hashable) collection of zero or more numbers whose type is range as shown below:
*Memo:
- A range can be unpacked with
*. - A range can be read by indexing:
- Indexing can be done with one or more
[index]in the range[The 1st index, The last index]:-
index(Required-Type:int):- Don't use
index=.
- Don't use
- Error occurs if
indexis out of range.
-
-
indexcan be signed indices(zero and positive and negative indices).
- Indexing can be done with one or more
v = range(5)
v = range(0, 5)
v = range(0, 5, 1)
print(v)
# range(0, 5)
print(type(v))
# <class 'range'>
print(v.start, v.stop, v.step)
# 0 5 1
print(*v)
print(v[0], v[1], v[2], v[3], v[4])
print(v[-5], v[-4], v[-3], v[-2], v[-1])
# 0 1 2 3 4
v = range(0, 5, 0)
# ValueError: range() arg 3 must not be zero
# Empty range
v1 = range(0)
v2 = range(0, 0)
v3 = range(0, 0, 1)
v4 = range(5, 5)
v5 = range(5, 5, 1)
print(v1, v2, v3, v4, v5)
# range(0, 0) range(0, 0) range(0, 0) range(5, 5) range(5, 5)
print(v[0])
# IndexError: range object index out of range
v = range(-10, 10, 3)
print(v)
# range(-10, 10, 3)
print(*v)
print(v[0], v[1], v[2], v[3], v[4], v[5], v[6])
print(v[-7], v[-6], v[-5], v[-4], v[-3], v[-2], v[-1])
# -10 -7 -4 -1 2 5 8
v = range(10, -10, -3)
print(v)
# range(10, -10, -3)
print(*v)
print(v[0], v[1], v[2], v[3], v[4], v[5], v[6])
print(v[-7], v[-6], v[-5], v[-4], v[-3], v[-2], v[-1])
# 10 7 4 1 -2 -5 -8
v1 = range(-10)
v2 = range(10, -10)
v3 = range(-10, 10, -3)
v4 = range(10, -10, 3)
print(v1, v2, v3, v4)
# range(0, -10) range(10, -10) range(-10, 10, -3) range(10, -10, 3)
print(v1[0])
print(v2[0])
print(v3[0])
print(v4[0])
# IndexError: range object index out of range
A range can be used with len() to get the length as shown below:
v = range(5)
print(*v)
# 0 1 2 3 4
print(len(v))
# 5
Top comments (0)