Перейти к содержимому

Реализуйте программу которая будет вычислять количество различных объектов в списке

  • автор:

Не работает программа, которая вычисляет кол-во различных объектов в списке

Прохожу сейчас курс на степике по питону, и в одном из степов попалась задача:

Реализуйте программу, которая будет вычислять количество различных объектов в списке. Два объекта a и b считаются различными, если a is b равно False. Вашей программе доступна переменная с названием objects, которая ссылается на список, содержащий не более 100 объектов. Выведите количество различных объектов в этом списке. Рассмотрим пример: objects = [1, 2, 1, 2, 3] # будем считать, что одинаковые числа соответствуют одинаковым объектам, а различные – различным Тогда все различные объекты являют собой множество . Таким образом, количество различных объектов равно трём.

Я написал программу, которая не работает:

n = len(objects) count = 0 for i in range(n): for j in range(i+1, n): if id(objects[i]) == id(objects[j]): count += 1 # считаю кол-во повторяющихся(по id) элементов print(n - count) #отнимаю это кол-во от общего числа 

В самом степе есть решение:

n = len(objects) ans = n for i in range(n): for j in range(i): if id(objects[i]) == id(objects[j]): ans -= 1 break print(ans) 

Я проверил свою на следующих примерах: objects = [1, 2, 1, 2, 3] objects = [1, 2, 1, 5, True, False, True, ‘false’, [], [1,2], [1,2]] И она выдает те же рез-ты, что и правильная, но тест не проходит. Вот хотел узнать почему? Потому что, как мне кажется, моя делает то же самое(подсчет повторов в списке) только направления движения второго цикла разные. Если кто-то понял, почему моя программа не решает задачу, объясните пожалуйста почему или хотя бы предложите начальные данные, на которых она выдаст неправильный результат. Заранее спасибо.

Реализуйте программу которая будет вычислять количество различных объектов в списке

Скачай курс
в приложении

Перейти в приложение
Открыть мобильную версию сайта

© 2013 — 2023. Stepik

Наши условия использования и конфиденциальности

Get it on Google Play

Public user contributions licensed under cc-wiki license with attribution required

Найти количество различных объектов в списке

Реализуйте программу, которая будет вычислять количество различных объектов в списке.
Два объекта a и b считаются различными, если a is b равно False.

Вашей программе доступна переменная с названием objects, которая ссылается на список, содержащий не более 100 объектов. Выведите количество различных объектов в этом списке.

Формат ожидаемой программы:

1 2 3 4 5
ans = 0 for obj in objects: # доступная переменная objects ans += 1 print(ans)

Примечание:
Количеством различных объектов называется максимальный размер множества объектов, в котором любые два объекта являются различными.

objects = [1, 2, 1, 2, 3] # будем считать, что одинаковые числа соответствуют одинаковым объектам, а различные – различным

Тогда все различные объекты являют собой множество <1, 2, 3>. Таким образом, количество различных объектов равно трём.
Мое решение:

objects = ['one', 'two', 'two', 'three'] print (len (set(objects)))

Оно у меня работает, но не правильное. В чем я не понял задачу?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Количество различных объектов в списке
Реализуйте программу, которая будет вычислять количество различных объектов в списке.

Как найти количество различных числе в списке?
4) Дан список чисел. Сколько различных чисел в списке? Например, в списке пять чисел (повторы.

Вычислить количество различных объектов в списке
Реализуйте программу, которая будет вычислять количество различных объектов в списке.

Определите количество различных элементов в списке
Дан список, упорядоченный по неубыванию элементов в нем. Определите, сколько в нем различных.

438 / 430 / 159
Регистрация: 21.05.2016
Сообщений: 1,338

print(len(set(map(id, objects))))

ЦитатаСообщение от Franek Посмотреть сообщение

Мое решение:

objects = ['one', 'two', 'two', 'three'] print (len (set(objects)))

Оно у меня работает, но не правильное. В чем я не понял задачу?

set сравнивает объекты оператором __eq__(), а по условию задачи нужно, чтобы объекты сравненивались оператором is

Добавлено через 32 минуты
Например, программа ниже выведет 1, хотя на самом деле правильный ответ 2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
class B: def __init__(self, n): self.n = n def __eq__(self, other): if not isinstance(other,B): return False return self.n == other.n def __hash__(self): return hash(self.n) b1 = B(1) b2 = B(1) print(b1 is b2) lst = [b1,b2] print(len(set(lst)))

Регистрация: 01.06.2016
Сообщений: 76
oldnewyear, такое решение мне казалось верным, но на сайте не принимается.

1 2 3 4 5 6 7 8 9
objects = [1, 2, 7, 1, 2, 3] lst = [] # В этот список добавляются неповторяющиеся объекты из objects lst.append(objects[0]) for obj in objects: if objects[0] is not obj+1 and obj not in lst: lst.append(obj) print(len((lst)))

438 / 430 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
Я написал вам решение
Регистрация: 01.06.2016
Сообщений: 76
oldnewyear, да, ваше решение тоже работает. Но на сайте определяется как неправильное.
438 / 430 / 159
Регистрация: 21.05.2016
Сообщений: 1,338

ЦитатаСообщение от Franek Посмотреть сообщение

oldnewyear, да, ваше решение тоже работает. Но на сайте определяется как неправильное.
Регистрация: 01.06.2016
Сообщений: 76
oldnewyear, оказывается список не нужно было создавать! Спасибо!
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Посчитать количество различных элементов в списке
Дан список. Посчитайте, сколько в нем различных элементов, не изменяя самого списка. Входные.

Функция: вернуть количество различных маленьких латинских букв в списке
создать динамический список элементами которого являются символы. Реализовать функцию, которая.

Обработка событий в различных фреймах и показ свойств различных объектов
Создать программу вывода списка всех гиперсвязей фрейма-потомка различными шрифтами, зависящими от.

Найти количество различных цифр у заданного натурального числа (найти ошибку)
Помогите пожалуйста найти ошибку. Я в ассемблере пока ничего не понимаю.Вот ,что попыталась.

Найти количество различных цифр числа (найти ошибку)
Нужно найти количество различных цифр числа.Помогите пожалуйста найти ошибку.Вот ,что попыталась.

Найти количество различных элементов
Дан целочисленный массив размера N. Найти количество различных элементов в данном массиве.

Python. Задача о нахождении количества уникальных объектов в списке. Два подхода.

Даны следующие условия: Реализуйте программу, которая будет вычислять количество различных объектов в списке. Два объекта a и b считаются различными, если a is b равно False. Вашей программе доступна переменная с названием objects, которая ссылается на список, содержащий не более 100 объектов. Выведите количество различных объектов в этом списке.

Решение в 10 строк(которое сразу пришло на ум):

list = [] for obj in objects: flag = False for l in list: if obj is l: flag = True break if not flag: list.append(obj) print(len(list))

Формируем список list c уникальными элементами. Элементы берём из objects.
Второй вариант более изящный. Используем особенность питона — множества. Как известно, они могут содержать только уникальные элементы. Решение в 4 строки:

m = set() for obj in objects: m.add(id(obj)) print(len(m))

03 07 2016

  • Python
    • Несколько примеров на Python. Модификация функции min — задаём диапазон чисел. Несколько примеров функционального программирования.
    • Функции как переменные в Python. Область видимости переменной. Реализация инкапсуляции переменной в Python.
    • Python. Задача о нахождении количества уникальных объектов в списке. Два подхода.
    • Пример анимации в Android с использованием TimeAnimator.
    • Android. Два способа записать результат Timer в пользовательский поток (UI Thread).
    • Несколько примеров на Kotlin
    • Несколько примеров на Python. Модификация функции min — задаём диапазон чисел. Несколько примеров функционального программирования.
    • Функции как переменные в Python. Область видимости переменной. Реализация инкапсуляции переменной в Python.
    • Python. Задача о нахождении количества уникальных объектов в списке. Два подхода.
    • LINQ. Некоторые примеры работы с интерфейсом IEnumerable.
    • С#. Пример обратного цикла с помощью лямбда-выражения с рекурсией.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *