Я бы использовал для этого dict, вы можете вернуть его обратно в список, если он вам нужен как список, но обычно полезно использовать dict для группировки:
first_list = [[ 1. , 45.4, 9.1],
[ 2. , 45.5, 9.1],
[ 2. , 45.4, 9.2],
[ 2. , 45.4, 9.2],
[ 3. , 45.4, 9.1],
[ 3. , 45.4, 9.1],
[ 3. , 45.4, 9.1] ]
result = dict()
for group, *values in first_list:
if group not in result:
result[group] = [values]
else:
result[group].append(values)
print(result)
### if you want it back as a list:
result_list = [v for k,v in result.items()]
print(result_list)
Вывод :
#dict:
{1.0: [[45.4, 9.1]], 2.0: [[45.5, 9.1], [45.4, 9.2], [45.4, 9.2]], 3.0: [[45.4, 9.1], [45.4, 9.1], [45.4, 9.1]]}
#list:
[[[45.4, 9.1]], [[45.5, 9.1], [45.4, 9.2], [45.4, 9.2]], [[45.4, 9.1], [45.4, 9.1], [45.4, 9.1]]]