Как научиться решать задачки на python?
Что учить дополнительно? Логику что ли? 
Неужели сложно обозначить шаги для решения задачи? 
Нужно перемешать список. Что такое перемешать список? Это сделать так, чтобы элементы были на случайных местах. Что нужно сделать чтоб они были на случайных местах? Взять элемент и поменять его местами со случайным элементом. Что нужно чтоб выбрать случайное место? Взять функцию генерации случайных чисел и обозначить границы выборки случайных чисел. 
Итого:

Запускаем цикл от первого элемента до последнего
Берём элемент, получаем случайное число в пределах размера массива
Меняем местами текущий элемент и элемент под случайным числом

ВСЁ
И это работает почти с любой задачей
Говорят, что  у писателей есть проблема чистого листа,  когда трудно вообще начать писать. Решение простое: нужно написать "В общем ...." или "Короче блин, произошло следующее ...." . И дальше писать станет проще
Я думаю аналогию Вы поняли, я лично в таких случаях просто рисую на бумаге схематично, что у меня есть и что мне нужно получить, потом расписываю более подробно и так далее. Становится понятнее

Также рекомендую иногда решать те же задачки с codewars.com/ или других ресурсов