Если у вас 32-битная система, максимальное количество элементов в массиве составляет 536 870 912, а максимальное int равно 2147483647, что, как вы можете видеть, намного больше, чем 202252 в вашем примере.Кроме того, даже если вы хотите сделать следующее:
>>> int(10000000000000000000)
10000000000000000000L
Так что, как и другие, нет целочисленного переполнения.И исключение довольно явное, это ошибка индекса, поэтому ваш список недостаточно велик.Чтобы быть в безопасности, и если вы не знаете, насколько большой массив строк, я бы переписал код следующим образом:
max_index = len(lines) - 1
fromline = random.randint(1, max_index/2 - 500)
for q in range(long(fromline),long(fromline)+500L):
if (len(str(lines[fromline+q])) < 3:
print "blabla"
------------- После редактирования --------------------
Ваш пример редактирования не имеет смысла в indexerror.Индекс, которого нет, равен 202252, поэтому, конечно, строки [1] и строки [10000] должны работать.Просто сделайте то же самое и напечатайте len (линии) и посмотрите, не меньше ли оно 202252.