Вы могли использовать, уменьшают до achive Вашу цель:
In [6]: import operator
In [7]: a = [(1, 2), (2,3), (4,5)]
In [8]: reduce(operator.add, a, ())
Out[8]: (1, 2, 2, 3, 4, 5)
Этот возврат кортеж вместо списка, потому что элементы в Вашем исходном списке являются кортежами, которые связываются. Но можно легко создать список из этого, и метод соединения принимает кортежи, также.
понимание списка А, между прочим, не правильный инструмент для этого. В основном понимание списка создает новый список путем описания, как элементы этого списка должны быть похожими. Вы хотите уменьшить список элементов только к одному значению.
Модуль fileinput
содержит набор удобных функций, одна из которых, кажется, делает именно то, что вы ищете:
for line in fileinput.input(["file.dat"]):
if not fileinput.isfirstline():
data = proces_line(line);
output(data)
Это прямо в документации: http://docs.python.org/library/fileinput.html#fileinput.isfirstline
lines = iter(fileinput.input(["file.dat"]))
next(lines) # extract and discard first line
for line in lines:
data = proces_line(line)
output(data)
или используйте способ itertools.islice, если предпочитаете
import itertools
finput = fileinput.input(["file.dat"])
lines = itertools.islice(finput, 1, None) # cuts off first line
dataset = (process_line(line) for line in lines)
results = [output(data) for data in dataset]
Поскольку все используемые являются генераторами и итераторами, промежуточный список не будет построен.