Изящный способ пропустить первую строку при использовании Python fileinput модуль?

Вы могли использовать, уменьшают до 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)

Этот возврат кортеж вместо списка, потому что элементы в Вашем исходном списке являются кортежами, которые связываются. Но можно легко создать список из этого, и метод соединения принимает кортежи, также.

понимание списка А, между прочим, не правильный инструмент для этого. В основном понимание списка создает новый список путем описания, как элементы этого списка должны быть похожими. Вы хотите уменьшить список элементов только к одному значению.

13
задан Hugo Corrá 6 November 2014 в 13:34
поделиться

3 ответа

Модуль fileinput содержит набор удобных функций, одна из которых, кажется, делает именно то, что вы ищете:

for line in fileinput.input(["file.dat"]):
  if not fileinput.isfirstline():
    data = proces_line(line);
    output(data)

документация модуля fileinput

15
ответ дан 1 December 2019 в 19:15
поделиться

Это прямо в документации: http://docs.python.org/library/fileinput.html#fileinput.isfirstline

5
ответ дан 1 December 2019 в 19:15
поделиться
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]

Поскольку все используемые являются генераторами и итераторами, промежуточный список не будет построен.

17
ответ дан 1 December 2019 в 19:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: