Python - определить первую итерацию цикла - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть некоторый код, который читает в файле, пропускает первую строку, а затем поле разбивает каждую строку.На первом проходе (т.е. в первой строке) я хочу записать длину поля, разделенного на переменную.Я знаю, что могу сделать это с помощью переменной счетчика, но есть ли более чистый способ?

line_count=1
for line in line_split[1:]:
        field_split = line.split(b'\t')
        if line_count=1:
            number_of_fields=len(field_split)
        line_count=line_count+1 

Ответы [ 4 ]

0 голосов
/ 22 сентября 2019

Если вы хотите обнаружить только первую строку, вы можете сделать это следующим образом -

first_line = True
for line in line_split[1:]:
    field_split = line.split(b'\t')
    if first_line:
        number_of_fields = len(field_split)
        first_line = False
        continue

«Продолжить» пропустит оставшуюся часть блока и сразу перейдет к следующей строке.

0 голосов
/ 22 сентября 2019
number_of_fields=len(line_split[1].split(b'\t')) if len(line_split) > 1

for index, line in enumerate(line_split[1:]):
   # Do whatever with index and line

Это оптимально, потому что if оценивается только один раз.А используя enumerate в списке, вы можете получить как индекс, так и элемент списка.

0 голосов
/ 22 сентября 2019
for line_count, line in enumerate(line_split[1:], 1):
    field_split = line.split(b'\t')
        if line_count == 1:
            number_of_fields = len(field_split)
0 голосов
/ 22 сентября 2019

Вы можете заменить определение line_count перечислителем:

for line_count, line in enumerate(line_split[1:]):
    field_split = line.split(b'\t')
    if line_count == 0:
        number_of_fields=len(field_split)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...