Почему функция возвращает разные числа?
1. Учим основы питона. Множество (set) всегда отсортировано, если создаётся из коллекции (в твоём случае — массива). И если ты сделаешь из него массив — он тоже будет отсортирован. Нет никакого смысла делать a.sort()
2. При увеличении k голова твоего массива "a" МОЖЕТ изменяться, потому что далеко не факт, что "f" и "c" попадут в хвост массива (из-за сортировки). Я даже могу пообещать тебе, что такого не будет, потому что "f" растёт медленней, чем "c". Поэтому при разном количестве шагов будут разные числа на позиции 6000
3. Если ты хочешь удалить дубли из массива без смены позиций — нельзя использовать set. Самый очевидный способ (но при этом очень медленный) — перегнать из одного массива в другой:a = [7, 5, 7, 7, 1, 2, 3, 2]
b = []
for i in a:
    if i not in b:
        b.append(i)
Сложность такого подхода — O(n**2)
Сократить до O(n) можно использованием множества:a = [7, 5, 7, 7, 1, 2, 3, 2]
b = []
s = set()
for i in a:
    if i not in s:
        b.append(i)
        s.add(i)
Так как проверки по хэш-таблице в среднем за O(1), то ты получаешь линейную сложностьДоказательство того, что со множествами быстрее:
a = list(set(integers))
вот эта функция берет список(list), преобразовывает его в множество(set), туда попадают только уникальные значения из integers, грубо говоря удаляет дубликаты и потом list(integers) преобразует обратно в список, однако список это упорядоченный масив, а вот set не упорядоченный, поэтому после преобразовывания set(integers) внутри все будет каждый раз перемешенно по разному, хотите вернуть упорядоченный, попробуйте
a = [integer for i, integer in enumerate(integers) if integer not in integers[:i]]