split()
возвращает вам список. И тогда вы пытаетесь получить доступ к первому, второму и третьему элементу,
line = [int(i) for i in line]
a = line[0]
b = line[1]
c = line[2]
Вместо того, что вы можете сказать прямо a,b,c = line.split()
тогда a
будет содержать line[0]
, b
будет содержать line[1]
и c
будет содержать line[2]
. Это должно сэкономить вам некоторое время.
with open(sample) as f:
for line in f:
a,b,c = line.split()
do_someprocess()
Пример:
with open("sample.txt","r") as f:
for line in f:
a,b,c = line.split()
print a,b,c
.txt файл
12 34 45
78 67 45
Выход:
12 34 45
78 67 45
EDIT: Я думал о разработке на it.I использовали timeit()
модуль t o сравнить время, затраченное на выполнение кода. Пожалуйста, дайте мне знать, если я что-то делаю неправильно. Следующим является способ OP для написания кода.
v = """ with open("sample.txt","r") as f:
for line in f:
line = line.split()
line = [int(i) for i in line]
a = line[0]
b = line[1]
c = line[2]"""
import timeit
print timeit.timeit(stmt=v, number=100000)
Выход:
8.94879606286 ## seconds to complete 100000 times.
Ниже мой способ написания кода.
s = """ with open("sample.txt","r") as f:
for line in f:
a,b,c = [int(s) for s in line.split()]"""
import timeit
print timeit.timeit(stmt=s, number=100000)
Выходы:
7.60287380216 ## seconds to complete same number of times.
Что делает do_someprocess()? Вы уверены, что 'split()' и 'int()' являются функциями, использующими наибольшее время? – nathancahill
Вы можете запустить python -m cProfile myscript.py, чтобы убедиться, что вы оптимизируете правильные функции. – nathancahill