Ошибка, которую вы получаете, состоит в том, что вы изменяете список (удаляете элементы из него), пытаясь перебрать его по индексу (таким образом, индекс 2 больше не существует к тому времени, когда ваш цикл диапазона достигает этого значения в вашем последнемfor loop).
Вы можете упростить подход, просто нарезав случайно перемешанный список, используя цикл диапазона с шагами, эквивалентными размеру групп, которые вы хотите вывести.Ниже приведен подход, при котором результирующие группы помещаются в один список, а затем выводятся выходные данные, аналогичные вашему примеру.
import random
top_twelve_players_info = [['Krombopulos Michael', 10, 3], ['Scary Terry', 2, 11], ['Jerry Smith', 7, 6], ['Blim Blam ', 11, 2], ['Summer Smith', 1, 12], ['Tophat Jones', 5, 8], ['Beth Smith', 6, 7], ['Abradolf Lincler', 4, 9], ['Alan Rails', 12, 1], ['Morty Smith', 3, 10], ['Rick Sanchez', 9, 4], ['Xenon Bloom', 3, 10]]
random.shuffle(top_twelve_players_info)
groups = [top_twelve_players_info[i:i+3] for i in range(0, 12, 3)]
for i, group in enumerate(groups):
print(f'Group {i + 1}: {group}')
# EXAMPLE OUTPUT (differs based on random shuffle results)
# Group 1: [['Beth Smith', 6, 7], ['Scary Terry', 2, 11], ['Krombopulos Michael', 10, 3]]
# Group 2: [['Xenon Bloom', 3, 10], ['Rick Sanchez', 9, 4], ['Tophat Jones', 5, 8]]
# Group 3: [['Morty Smith', 3, 10], ['Abradolf Lincler', 4, 9], ['Jerry Smith', 7, 6]]
# Group 4: [['Summer Smith', 1, 12], ['Alan Rails', 12, 1], ['Blim Blam ', 11, 2]]
Или, если вам действительно нужно, чтобы каждая группа была назначена своей собственной переменной:
[group_1, group_2, group_3, group_4] = [top_twelve_players_info[i:i+3] for i in range(0, 12, 3)]
print(f'Group 1: {group_1}')
print(f'Group 2: {group_2}')
print(f'Group 3: {group_3}')
print(f'Group 4: {group_4}')