Уведомления

Группа в Telegram: @pythonsu

#1 Март 5, 2013 17:19:54

nickmetal
Зарегистрирован: 2012-11-15
Сообщения: 49
Репутация: +  0  -
Профиль   Отправить e-mail  

Как выбрать несколько минимальных значений из списка?

К примеру, есть список

a=[33,12,2,3,2]

Как сделать, чтобы получить, например, 3 минимальных значения из этого списка?

Отредактировано nickmetal (Март 5, 2013 17:20:51)

Офлайн

#2 Март 5, 2013 18:23:01

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Как выбрать несколько минимальных значений из списка?

In [1]: a=[33,12,2,3,2]
 
In [2]: sorted(a)[:3]
Out[2]: [2, 2, 3]
или
In [3]: import heapq
 
In [4]: heapq.nsmallest(3, a)
Out[4]: [2, 2, 3]

Отредактировано reclosedev (Март 5, 2013 18:23:26)

Офлайн

#3 Март 6, 2013 04:47:29

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как выбрать несколько минимальных значений из списка?

a=[33,12,2,3,2]
print sorted(list(set(a)))[:3]
>>> [2, 3, 12]



Офлайн

#4 Март 6, 2013 13:32:26

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9826
Репутация: +  852  -
Профиль   Отправить e-mail  

Как выбрать несколько минимальных значений из списка?

FishHook
sorted(list(set(a)))[:3]
>>> a = [33, 12, 2, 3, 2]
>>> print sorted(set(a))[:3]
[2, 3, 12]
>>>

лучше однопроходной алгоритм сделать, чтобы не сортировать список



Отредактировано py.user.next (Март 6, 2013 13:33:48)

Офлайн

#5 Март 6, 2013 13:37:16

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Как выбрать несколько минимальных значений из списка?

У меня теперь вопрос. Зачем внутри функции sorted использовать set?
Спасибо за ответ…



Офлайн

#6 Март 6, 2013 13:42:57

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как выбрать несколько минимальных значений из списка?

4kpt
У меня теперь вопрос. Зачем внутри функции sorted использовать set?Спасибо за ответ…
ТСа понять можно двояко, он же не удосужился рассказать нам, понимается ли под “минимальным” уникальное значение или нет.



Офлайн

#7 Март 6, 2013 16:51:15

nickmetal
Зарегистрирован: 2012-11-15
Сообщения: 49
Репутация: +  0  -
Профиль   Отправить e-mail  

Как выбрать несколько минимальных значений из списка?

FishHook
….он же не удосужился рассказать нам…

Я?

Ну, даже если есть одинаковые минимальные значения- то годится. Хочу использовать в “дураке” когда сравнивают величину карт в колоде, чтобы узнать, чем ходить

Отредактировано nickmetal (Март 6, 2013 16:51:46)

Офлайн

#8 Март 7, 2013 00:15:24

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9826
Репутация: +  852  -
Профиль   Отправить e-mail  

Как выбрать несколько минимальных значений из списка?

4kpt
У меня теперь вопрос. Зачем внутри функции sorted использовать set?
чтобы одинаковые элементы не принимать за разные минимальные значения

FishHook
ТСа понять можно двояко, он же не удосужился рассказать нам, понимается ли под “минимальным” уникальное значение или нет.
логически можно вывести, используя метод от противного:
предположим, что автор имел в виду три любых минимальных значения (одинаковых или разных), тогда можно найти одно минимальное значение и вывести его три раза; тогда задача превращается в поиск минимального значения в списке
но автор написал про выбор нескольких минимальных значений в названии темы, а не про одно, следовательно, получаем противоречие

nickmetal
Ну, даже если есть одинаковые минимальные значения- то годится.
а как оно годится ? если ты их выбираешь, то как ты потом определишь, какой картой ходить ?



Отредактировано py.user.next (Март 7, 2013 00:22:11)

Офлайн

#9 Март 7, 2013 10:03:13

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Как выбрать несколько минимальных значений из списка?

Да нет, вопрос был просто о минимальных 3-х значениях, и, по-умолчанию допускаются одинаковые значения, так что отсеивать их это имхо ваша личная инициатива. А в картах… Как можно например семерку бубей и семерку крести просто цифрой 7 идентефицировать, карты уникальны же, эти при сортировке должны лечь рядом просто, и set не поможет.

Офлайн

#10 Март 7, 2013 13:26:24

nickmetal
Зарегистрирован: 2012-11-15
Сообщения: 49
Репутация: +  0  -
Профиль   Отправить e-mail  

Как выбрать несколько минимальных значений из списка?

py.user.next
а как оно годится ? если ты их выбираешь, то как ты потом определишь, какой картой ходить ?
я назвал карты в списке так diamons_7, clovers_8,…
И вот есть рандомная колода(список) для игрока из 6 карт, срезом я узнаю масть, и срезом же узнаю величину. И вот для моей примитивной логики нужно узнать самые маленькие карты из колоды, даже если есть одинаковые величины ( козырь я учту потом), чтобы ими походить. Я тут пока не пытаюсь создать сильно умного ИИ, но чтобы и не особо тупой был Надеюсь, ситуацию раскрыл и всем спасибо за ответы и спасибо, кто еще напишет разного рода замечания. И вот когда осветил ситуацию поподробней, интересно было бы узнать, каким способом узнать минимальные карты?

Отредактировано nickmetal (Март 7, 2013 13:28:40)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version