Немного мета-ответа (?) На Предложение автоплектики об использовании zip()
С 3 строками во входном файле (из предоставленных данных в вопросе):
Метод zip()
занимает в среднем 0.404729390144
секунд по сравнению с 0.341339087486
с простым циклом for, строящим два списка (код из принятого в настоящее время ответа * mipadi ).
С 10 000 строк во входном файле (случайным образом сгенерированные слова из 3-12 символов. Я уменьшил значения timeit.repeat()
до 100 раз, повторяя дважды):
zip()
занимает в среднем 1.43965339661
секунд по сравнению с 1.52318406105
с циклом for.
Оба теста были выполнены с использованием Python версии 2.5.1
Едва огромная разница. Учитывая, насколько простым для чтения является простой цикл for, я бы порекомендовал его использовать. Код zip
может быть немного быстрее с большими файлами, но разница составляет около 0,083 секунды с 10 000 линии ..
Код бенчмаркинга:
import timeit
# /423380/chto-to-ne-tak-s-vyvodom-iz-spiska-v-python#423384
code_zip = """english2german = open('english2german.txt')
eng, ger = zip(*( line.split() for line in english2german ))
"""
# https://stackoverflow.com/questions/743248/something-wrong-with-output-from-list-in-python/743268#743268
code_for = """english2german = open("english2german.txt")
englist = []
gerlist = []
for line in english2german:
(e, g) = line.split()
englist.append(e)
gerlist.append(g)
"""
for code in [code_zip, code_for]:
t = timeit.Timer(stmt = code)
try:
times = t.repeat(10, 10000)
except:
t.print_exc()
else:
print "Code:"
print code
print "Time:"
print times
print "Average:"
print sum(times) / len(times)
print "-" * 20