Найти - Пользователи
Полная версия: Как выбрать несколько минимальных значений из списка?
Начало » Python для новичков » Как выбрать несколько минимальных значений из списка?
1 2
nickmetal
К примеру, есть список
a=[33,12,2,3,2]

Как сделать, чтобы получить, например, 3 минимальных значения из этого списка?
reclosedev
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]
FishHook
a=[33,12,2,3,2]
print sorted(list(set(a)))[:3]
>>> [2, 3, 12]
py.user.next
FishHook
sorted(list(set(a)))[:3]
>>> a = [33, 12, 2, 3, 2]
>>> print sorted(set(a))[:3]
[2, 3, 12]
>>>

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

Я?

Ну, даже если есть одинаковые минимальные значения- то годится. Хочу использовать в “дураке” когда сравнивают величину карт в колоде, чтобы узнать, чем ходить
py.user.next
4kpt
У меня теперь вопрос. Зачем внутри функции sorted использовать set?
чтобы одинаковые элементы не принимать за разные минимальные значения

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

nickmetal
Ну, даже если есть одинаковые минимальные значения- то годится.
а как оно годится ? если ты их выбираешь, то как ты потом определишь, какой картой ходить ?
dimy44
Да нет, вопрос был просто о минимальных 3-х значениях, и, по-умолчанию допускаются одинаковые значения, так что отсеивать их это имхо ваша личная инициатива. А в картах… Как можно например семерку бубей и семерку крести просто цифрой 7 идентефицировать, карты уникальны же, эти при сортировке должны лечь рядом просто, и set не поможет.
nickmetal
py.user.next
а как оно годится ? если ты их выбираешь, то как ты потом определишь, какой картой ходить ?
я назвал карты в списке так diamons_7, clovers_8,…
И вот есть рандомная колода(список) для игрока из 6 карт, срезом я узнаю масть, и срезом же узнаю величину. И вот для моей примитивной логики нужно узнать самые маленькие карты из колоды, даже если есть одинаковые величины ( козырь я учту потом), чтобы ими походить. Я тут пока не пытаюсь создать сильно умного ИИ, но чтобы и не особо тупой был Надеюсь, ситуацию раскрыл и всем спасибо за ответы и спасибо, кто еще напишет разного рода замечания. И вот когда осветил ситуацию поподробней, интересно было бы узнать, каким способом узнать минимальные карты?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB