Вы можете использовать csv.reader
для чтения и генерации строк в виде последовательности, использовать функцию enumerate
для генерации индексов строк, а затем использовать itertools.groupby
с ключевой функцией, которая возвращает разницу между индексом строки и номер строки (первое поле), чтобы список можно было сгруппировать по последовательным последовательностям номеров строк (учитывая, что ваш файловый объект f
уже открыт):
from itertools import groupby
import csv
[[[round(float(r[1]), 2), int(r[2])] for _, r in g] for _, g in groupby(enumerate(csv.reader(f, delimiter=' ')), key=lambda t: t[0] - int(t[1][0]))]
Возвращает:
[[[0.05, 0],
[0.1, 0],
[0.15, 0],
[0.2, 0],
[0.25, 0],
[0.3, 0],
[0.35, 0],
[0.4, 1],
[0.45, 1],
[0.5, 2],
[0.55, 3],
[0.6, 4],
[0.65, 5],
[0.7, 6],
[0.75, 7],
[0.8, 8],
[0.85, 8],
[0.9, 9],
[0.95, 10],
[1.0, 11]],
[[0.05, 0],
[0.1, 1],
[0.14, 1],
[0.19, 1],
[0.24, 1],
[0.29, 1],
[0.33, 1],
[0.38, 1],
[0.43, 1],
[0.48, 1],
[0.52, 2],
[0.57, 3],
[0.62, 4],
[0.67, 5],
[0.71, 5],
[0.76, 5],
[0.81, 6],
[0.86, 7],
[0.9, 8],
[0.95, 8],
[1.0, 9]],
[[0.05, 0],
[0.11, 0],
[0.16, 0],
[0.21, 0],
[0.26, 1],
[0.32, 1],
[0.37, 1],
[0.42, 1],
[0.47, 2],
[0.53, 3],
[0.58, 3],
[0.63, 3],
[0.68, 4],
[0.74, 5],
[0.79, 5],
[0.84, 6],
[0.89, 7],
[0.95, 8],
[1.0, 9]]]