同様の状況で両方の例外が発生しているようです。
これら 2 つのコード行のそれぞれの違いと、舞台裏で何が起こっているのでしょうか?
>>> (i for i in range(1000000000)) # 10^9
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
MemoryError
>>> (i for i in range(10000000000)) # 10^10
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: range() result has too many items