Почему количество уникальных значений не соответствует?
Реализуйте программу, которая будет вычислять количество различных объектов в списке.
Два объекта a и b считаются различными, если a is b равно False.
Вашей программе доступна переменная с названием objects, которая ссылается на список, содержащий не более 100 объектов. Выведите количество различных объектов в этом списке.
Примечание:
Количеством различных объектов называется максимальный размер множества объектов, в котором любые два объекта являются различными.
Рассмотрим пример:
objects = [1, 2, 1, 2, 3] # будем считать, что одинаковые числа соответствуют одинаковым объектам, а различные – различным
Тогда все различные объекты являют собой множество {1, 2, 3}. Таким образом, количество различных объектов равно трём.
Мое решение:
objects = [1, 2, 1, 2, 3]
a = set()
for obj in objects:
if objects[obj] not in a:
a.add(objects[obj])
print(len(a))
Вроде все правильно, но длина множества получается 2 а не 3.
Проблема решения в том, что Вы сам объект используете как индекс в списке
# здесь obj это сами объекты списка: 1,2,1,2,3
for obj in objects:
# а здесь проверяете не сам объект а объект списка с таким индексом
if objects[obj] not in a:
Таким образом при obj=3 идет проверка не 3, а элемента с индексом 3, т.е. objects[3] = 2, поэтому ничего не добавляется.