Вот ответ
В этом коде
with open("file.csv", 'r', newline = "\n") as f:
reader = csv.reader(f, delimiter = ",")
data = []
for i, r in enumerate(reader):
if i >= 1000:
break
data.append(r)
в области действия for
область действия for
прекратится, если i >= 1000
Но в этом коде нет ключевого слова break
(поскольку вы использовали списковое понимание)
with open("file.csv", 'r', newline = "\n") as f:
reader = csv.reader(f, delimiter = ",")
data = [r for i, r in enumerate(reader) if i < 1000]
Почему это медленно? Потому что data = [r ...]
не сломается, если i < 1000
, но всегда будет читать, пока enumerate(reader)
не закончится. Это отличается от предыдущего кода, где for
область действия прервется, если i >= 1000
. Но не для понимания списка
Вы можете использовать подобный код, используя raise StopIteration
или другой метод, например
def LoopEnd():
raise StopIteration()
with open("file.csv", 'r', newline = "\n") as f:
reader = csv.reader(f, delimiter = ",")
data = [r if i < 1000 else LoopEnd() for i, r in enumerate(reader)]