Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 12, 2015 09:43:42

Tucha
Зарегистрирован: 2015-09-12
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите самый "быстрый" вариант плз

Есть очень большой список в котором очень много значений, все значения повторяются разное кол-во раз.
Нужно посчитать сколько у каждого значения повторений (все значения известны заранее!).
Самое быстрое, что я смог придумать, это единственный проход по списку с помощью for и добавлением в словарь ключа со значением 1, если такой ключ есть, соответственно 1+1 и так далее.
Вопрос: можно сделать, что то побыстрей этого варианта ?
И ещё маленький вопрос, есть ли смысл преобразовать список в кортеж перед итерацией ? В книгах которые я читал, пишут, что неизменяемые объекты быстрее обрабатываются.

Офлайн

#2 Окт. 12, 2015 14:24:07

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Подскажите самый "быстрый" вариант плз

collections.Counter

Офлайн

#3 Окт. 12, 2015 15:54:48

Tucha
Зарегистрирован: 2015-09-12
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите самый "быстрый" вариант плз

4kpt_III
collections.Counter
Одинаковая скорость, но всё равно спасибо, код уменьшился на одну строку
Да и вообще полезный модуль, в будущем пригодиться 100%

Офлайн

#4 Окт. 12, 2015 23:55:48

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Подскажите самый "быстрый" вариант плз

Tucha
как на одну строку? Вы точно его правильно готовите?? Там все решение уходит в одну строку. Вот пример

>>> from collections import Counter
>>> d=range(10)+range(0, 20, 2)+range(30,0, -3)
>>> c = Counter(d)
>>> c
Counter({6: 3, 0: 2, 2: 2, 3: 2, 4: 2, 8: 2, 9: 2, 12: 2, 18: 2, 1: 1, 5: 1, 7:
1, 10: 1, 14: 1, 15: 1, 16: 1, 21: 1, 24: 1, 27: 1, 30: 1})



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Окт. 13, 2015 10:08:34

Tucha
Зарегистрирован: 2015-09-12
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите самый "быстрый" вариант плз

JOHN_16
Tuchaкак на одну строку? Вы точно его правильно готовите?? Там все решение уходит в одну строку. Вот пример
Ну да, было две строки, стала одна == код уменьшился на одну строку

Офлайн

#6 Окт. 13, 2015 12:08:05

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Подскажите самый "быстрый" вариант плз

Так вроде недавно обсуждали: http://python.su/forum/topic/28208/



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version