Подкиньте идею или код(в котором я буду разбираться)/ Думаю сделать это через два цикла for. Если есть более короткое решение, напишите мне. Задача:
Дан список, упорядоченный по неубыванию элементов в нем. Определите, сколько в нем различных элементов.
Отслеживать
13.6k 12 12 золотых знаков 43 43 серебряных знака 72 72 бронзовых знака
задан 3 фев 2021 в 21:25
19 1 1 серебряный знак 4 4 бронзовых знака
Можно через сортировку, можно через set, можно и вправду двойным циклом: добавляем i-тый элемент в массив ans, если в массиве a[i] not in ans. А, если упорядоченный, то просто проверить, что данный элемент не равен предыдущему
3 фев 2021 в 21:32
список упорядоченный, а значит, вы можете за 1 проход подсчитать дубликаты. Зная количество дубликатов уже просто найти количество различных значений.
3 фев 2021 в 21:33
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Хватит и одного цикла: считать разницу двух соседних элементов. Если не 0, то они различные. Это если числа. Если не числа, то просто сравнивать соседние элементы.
Уроки Python — Списки (Массивы)
n = len(set(spisok))
Отслеживать
ответ дан 3 фев 2021 в 21:28
25.2k 7 7 золотых знаков 30 30 серебряных знаков 46 46 бронзовых знаков
Всё-таки если в условии подсвечено, что дан отсортированный список, то вряд ли ожидается, что это надо решать через set.
3 фев 2021 в 22:41
3 фев 2021 в 22:43
3 фев 2021 в 22:50
А вот ещё такой забавный вариант у меня получился чисто по приколу:
print(sum(x != y for x,y in zip(a, a[1:])) + bool(a))
Второе слагаемое нужно, чтобы правильно учесть как пустой список, так и первый элемент списка если список не пустой. А первое слагаемое считает, сколько было изменений значения в списке после первого элемента.
Отслеживать
ответ дан 4 фев 2021 в 8:45
65.8k 5 5 золотых знаков 19 19 серебряных знаков 50 50 бронзовых знаков
самый быстрый способ (раз упорядоченный список):
nums = [1, 2, 2, 3, 4, 5, 5, 5] count = 1 for i in range(1, len(nums)): if nums[i — 1] != nums[i]: count += 1 print(count)
или чуть сократив код:
count = 1 for i in range(1, len(nums)): count += nums[i — 1] != nums[i]
правда стоит сделать проверку для ситуации, когда список пустой
из той же серии (если требуется не только подсчитать кол-во элементов, но и найти эти элементы)
count = len([nums[0]] + [nums[i] for i in range(1, len(nums)) if nums[i — 1] != nums[i]])
Это все требует одного прохода по списку
Можно написать очень короткий код, но по времени работы для такой задачи он будет неоптимальным
count = len(set(nums))
Самый неоптимальный по времени работы код
nums = [1, 2, 2, 3, 4, 5, 5, 5] res = [] for elem in nums: if elem not in res: res.append(elem) print(len(res))
Источник: ru.stackoverflow.com
Решение простых задач на python | Даны три целых числа. Найти количество положительных чисел #python
ПИТОН
Напишите программу, которая сортирует массив целых чисел и определяет количество различных значений в нём.
Входные данные
Первая строка содержит размер массива N . Во второй строке через пробел задаются N чисел – элементы массива. Гарантируется, что 0 < N ≤ 1000 .
Выходные данные
Программа должна вывести в первой строке элементы массива, отсортированного в порядке возрастания, а во второй строке – количество различных чисел в массиве.
Примеры
входные данные
6
6 2 1 3 6 2
выходные данные
1 2 2 3 6 6
4
nekitoss: Т. е. вы хотите задать размер массива например 6 чисел и чтобы при задании чисел вам автоматически при вводе больше 6 чисел выдавался результат первых 6 чисел? Это сложно и даже вот это одно условие не для 9 класса. Условие очень сложное, уточните пожалуйста условие.
nekitoss: Что если вы введете размер 900 чисел, а запишете всего 899, что с последним числом, что там должно вывестись? ошибка?
Dreamtown03: Это задание для 10 класса. Нет, здесь считается, что количество введенных чисел равно N b jib,jr ,snm yt vj;tn
Dreamtown03: и ошибок быть не может*
nekitoss: Т.е. вы хотите сказать что если вы ввели количество чисел равное 800, то вы и введете 800 чисел не больше, не меньше?
Dreamtown03: Да
Dreamtown03: при проверке программы компьютер сам подбирает значения, так что никому не придется вводить 800 чисел, нужно лишь только решение, а вернее, сама программа
Источник: sous-otvet.net
Программа которая сортирует массив и находит количество различных чисел в нем питон
Вопрос по информатике:
(PYTHON. )
Отсортировать массив и найти количество различных чисел в нем.
Трудности с пониманием предмета? Готовишься к экзаменам, ОГЭ или ЕГЭ?
Воспользуйся формой подбора репетитора и занимайся онлайн. Пробный урок — бесплатно!
- bookmark_border
- 09.07.2018 03:53
- Информатика
- remove_red_eye 6817
- thumb_up 33
Ответы и объяснения 1
mas = [int(i) for i in input(‘Введите массив : ‘).split()]
mas.sort()
print(mas)
for i in mas:
if mas.count(i) == 1:
print(i,’ ‘)
- 01.01.1970 00:00
- thumb_up 19
Знаете ответ? Поделитесь им!
Как написать хороший ответ?
Чтобы добавить хороший ответ необходимо:
- Отвечать достоверно на те вопросы, на которые знаете правильный ответ;
- Писать подробно, чтобы ответ был исчерпывающий и не побуждал на дополнительные вопросы к нему;
- Писать без грамматических, орфографических и пунктуационных ошибок.
Этого делать не стоит:
- Копировать ответы со сторонних ресурсов. Хорошо ценятся уникальные и личные объяснения;
- Отвечать не по сути: «Подумай сам(а)», «Легкотня», «Не знаю» и так далее;
- Использовать мат — это неуважительно по отношению к пользователям;
- Писать в ВЕРХНЕМ РЕГИСТРЕ.
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи — смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.
Источник: online-otvet.ru