0 / 0 / 0
Регистрация: 26.08.2013
Сообщений: 10

Как найти число, встречающееся чаще всего?

27.08.2013, 12:57. Показов 11476. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Нужна небольшая помощь с задачкой.
Вот собственно и она:
======================================== ======================================== ==============
Напишите программу, которая находит число, которое встречается среди данных чисел чаще всего.

Формат вывода
Одно целое число.

Пример ввода
3, 5, 1, 2, 5
Пример вывода
5
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.08.2013, 12:57
Ответы с готовыми решениями:

Как найти число, чаще всего встречающееся в массиве?
Здравствуйте. Пытаюсь решить задачу, но не знаю, с помощью чего. Нашла несколько методов, но ни один не работает. Дан массив a из n целых...

Слово, встречающееся чаще всего
Runtime error( Дан текст. Выведите слово, которое в этом тексте встречается чаще всего. Если таких слов несколько, выведите то, которое...

Число, которое встречается чаще всего в списке = Тайм-лимит
Дан список целых чисел. Найдите число, которое встречается чаще всего в списке. Входные данные: В единственной строке содержится...

30
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
27.08.2013, 14:57
Ежели запихать наши числа в список mylist, то можно так:
Python
1
2
3
4
frequency = {}
for x in mylist:
    frequency[x] = frequency.get(x, 0)+1
max([(k,v) for k,v in frequency.iteritems()], key = lambda x:x[1])[0]
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
27.08.2013, 15:13
Python
1
2
3
4
5
6
7
8
9
10
11
12
>>> def f(lst):
...     nums = {}
...     n, nm = None, 0
...     for i in lst:
...         nums[i] = t = nums.get(i, 0) + 1
...         if t > nm:
...             n, nm = i, t
...     return n
... 
>>> f([3, 5, 1, 2, 5])
5
>>>
0
0 / 0 / 0
Регистрация: 26.08.2013
Сообщений: 10
27.08.2013, 15:29  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Ежели запихать наши числа в список mylist, то можно так:
Python
1
2
3
4
frequency = {}
for x in mylist:
    frequency[x] = frequency.get(x, 0)+1
max([(k,v) for k,v in frequency.iteritems()], key = lambda x:x[1])[0]
Не работает, ошибка в iteritems
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
27.08.2013, 15:40
Цитата Сообщение от Dr_Temka Посмотреть сообщение
Не работает, ошибка в iteritems
Ну не знаю, стандартный метод, должно работать.
0
0 / 0 / 0
Регистрация: 26.08.2013
Сообщений: 10
27.08.2013, 15:54  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Ну не знаю, стандартный метод, должно работать.
По моему он пишется interiyems
Не?
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
27.08.2013, 15:57
Цитата Сообщение от Dr_Temka Посмотреть сообщение
По моему он пишется interiyems
Не?
Нет, он пишется так. Это копипаста из моей консольки, где я проверил.
1
100 / 85 / 5
Регистрация: 06.05.2013
Сообщений: 242
27.08.2013, 18:12
Цитата Сообщение от Dr_Temka Посмотреть сообщение
Не работает, ошибка в iteritems
Ты какую версию Python, юзаешь? Скорее всего 3.x, а у dondublon похоже 2.x. Отсюда и ошибка.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
27.08.2013, 21:54
у dondublon'а там второй проход, который не нужен

Цитата Сообщение от Dr_Temka Посмотреть сообщение
По моему он пишется interiyems
в третьем это будет просто .items()
1
0 / 0 / 0
Регистрация: 26.08.2013
Сообщений: 10
27.08.2013, 22:07  [ТС]
Спасибо всем!
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
29.08.2013, 13:05
Цитата Сообщение от accept Посмотреть сообщение
у dondublon'а там второй проход, который не нужен
Это типа функциональный стиль
Переменных по минимуму, только frequency, да и от неё, возможно, можно избавиться.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
29.08.2013, 13:16
Цитата Сообщение от dondublon Посмотреть сообщение
Это типа функциональный стиль
это два прохода вместо одного
если не понимаешь разницу, представь, что там миллион элементов
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
29.08.2013, 13:27
Вот, если кому интересно, чисто функциональное решение:
Python
1
2
3
4
5
6
mylist = [3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 5, 5, 5, 5]
keys = set(mylist)
frequency = dict([(k, len(filter(lambda x: x == k, mylist))) for k in keys])
print frequency
mymax = max([(k,v) for k,v in frequency.iteritems()], key = lambda x:x[1])[0]
print mymax
Чисто из спортивного интереса.
Переменных по смыслу тут нет. И keys, и frequency не меняются и, следовательно, могут быть подставлены в использующие их выражения.

Добавлено через 40 секунд
Цитата Сообщение от accept Посмотреть сообщение
это два прохода вместо одного
если не понимаешь разницу, представь, что там миллион элементов
Я понимаю. Понятно, что императив быстрее. Но там, где нужна скорость, на питоне не пишут
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
29.08.2013, 13:27
Цитата Сообщение от dondublon Посмотреть сообщение
Понятно, что императив быстрее.
не императив, а однопроходной алгоритм
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
29.08.2013, 13:31
Цитата Сообщение от accept Посмотреть сообщение
не императив, а однопроходной алгоритм
Не вижу противоречия
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
31.08.2013, 18:57
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
>>> import timeit
>>> import collections
>>> 
>>> def f1(lst):
...     elems = {}
...     e, em = None, 0
...     for i in lst:
...         elems[i] = t = elems.get(i, 0) + 1
...         if t > em:
...             e, em = i, t
...     return e
... 
>>> def f2(lst):
...     frequency = {}
...     for x in lst:
...         frequency[x] = frequency.get(x, 0)+1
...     return max([(k,v) for k,v in frequency.items()], key = lambda x:x[1])[0]
... 
>>> def f3(lst):
...     return collections.Counter(lst).most_common(1)[0][0]
... 
>>> t1 = timeit.Timer('f1([3, 5, 1, 2, 5])', 'from __main__ import f1')
>>> t2 = timeit.Timer('f2([3, 5, 1, 2, 5])', 'from __main__ import f2')
>>> t3 = timeit.Timer('f3([3, 5, 1, 2, 5])', 'from __main__ import f3')
>>> t1.repeat(3)
[2.0534028900000294, 2.069512689000021, 2.0679963759999964]
>>> t2.repeat(3)
[5.193368679000059, 5.286952303000021, 5.156681644999935]
>>> t3.repeat(3)
[18.053162295999982, 18.012273875000005, 18.20183160700003]
>>>
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
31.08.2013, 20:46
accept, не стоило так стараться, я же сразу признал, что императивный код быстрее.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
31.08.2013, 20:51
Цитата Сообщение от dondublon Посмотреть сообщение
не стоило так стараться, я же сразу признал
это вообще сравнение способов
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
31.08.2013, 21:15
Если бы стояла задача сделать это быстро, то я бы сделал две вещи.
1. Поскольку бутылочное горлышко тут, очевидно, поиск в словаре, подумал насчет замены словаря на список или массив. Исходя из диапазона чисел, но, думаю, можно было бы сделать.
2. Ну и конечно, использовал бы numpy, в частности, функцию unique.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
31.08.2013, 22:44
Цитата Сообщение от dondublon Посмотреть сообщение
1. Поскольку бутылочное горлышко тут, очевидно, поиск в словаре, подумал насчет замены словаря на список или массив.
вообще-то, поиск в словаре - O(1)

Цитата Сообщение от dondublon Посмотреть сообщение
2. Ну и конечно, использовал бы numpy
если он установлен
скрипт может попасть туда, где нет numpy
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.08.2013, 22:44
Помогаю со студенческими работами здесь

Определите, с какого слова чаще всего начинаются предложения в тексте, а также которым чаще всего заканчиваются
Определите, с какого слова чаще всего начинаются предложения в тексте, а также которым чаще всего заканчиваются.

Вывести число, которое встречается в списке чаще всего
Помогите, пожалуйста, решить задачи. Сижу уже 5-й час и не могу решить. Условие задачи Нужно реализовать функцию, принимающую...

Найти в строке слово, встречающееся чаще всего
Задача найти в строке слово ,встречающееся чаще всего. Ввожу строку ,делю её на слова и их в массив слов. Вопрос собственное как потом...

Найти чаще всего встречающееся в массиве значение
Генерировать случайный массив(int) размерности 2000, элементы массива принимают значения (1..5+3). Найти чаще всего встречающееся значение.

Найти слово, встречающееся чаще всего в данном текстовом файле
Парни нужна помощь, задали задачку на сдачу, а я не шарю как сделать: Есть файл с текстом. Найти слово, встречающееся чаще всего в данном...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru