Форум сайта python.su
857
sergeekprefs вынесено в отдельный этап и задаёт порядок
но ведь не гоже благородному дону выполнять работу машины. Вдруг там таких хренек очень много?
sergeekэто где убрали ?
в третьем оказывается убрали аргумент с функцией на сравнение в сортировке
>>> print(sorted.__doc__, list.sort.__doc__, sep='\n') sorted(iterable, key=None, reverse=False) --> new sorted list L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE* >>>
sergeekпопробуй сделать import this в интерпретатореv_rezultate = ', '.join([', '.join(sorted(g,key=num_key)) for k,g in groupby(sorted(stroka.split(', '),key=name_key),key=name_key)]) v_rezultate
Офлайн
36
sergeekЕсли благородный дон проявит инициативу, то он с легкостью найдет топик, в котором обсуждался выбор уникальных значений последовательности с сохранением порядка следования :)
но ведь не гоже благородному дону выполнять работу машины. Вдруг там таких хренек очень много?
import re LITERALS = re.compile(r"\D+") s = 'WTS1234, ACDW485, WTS72, SHR728, ACDW14, SHR16, WTS16' def _unique(iterable): seen = set() return (x for x in iterable if x not in seen and not seen.add(x)) out = [] # код py.user.next for pref in _unique(LITERALS.search(_).group() for _ in s.split(", ")): lst = re.findall(pref + r'\d+', s) lst.sort(key=lambda i: int(re.search(r'\d+', i).group())) out.extend(lst) sout = ', '.join(out) print(s) print(sout)
Офлайн
43
py.user.nextпорядок неизвестен же. Если бы тсу понадобилось отсортировать 7 элементов он бы наверно сделал это руками. Стало быть велика веротность что таких элементов много или вообще неизвестно. А в таком случае делать часть сортировки вручную неприемлемо
prefs вынесено в отдельный этап и задаёт порядок, этот этап совершенно независим, загрузка может проводиться из файла
py.user.nextэто функция для доступа по ключу а не на сравнение. Я про cmp
это где убрали ?
Офлайн
43
def _unique(iterable): seen = set() return (x for x in iterable if x not in seen and not seen.add(x))
and not seen.add(x))
def _unique(iterable): return {x for x in iterable}
Офлайн
36
sergeekВы не внимательны, необходимо не только отобрать уникальные элементы, но и сохранить порядок следования
есть же …
Офлайн
43
pyuserда, но все равно это не изменяет того факта что та конструкция уродлива
лучше же добавить 1-2 строки. И повторюсь, про порядок следования у тса ни слова.
Отредактировано sergeek (Янв. 9, 2013 12:27:46)
Офлайн
857
pyuserэто откуда взято ?
выбор уникальных значений последовательности с сохранением порядка следования
sergeekне, она конкретно написала, что по буквам оно должно быть отсортировано так, а по числам - по возрастанию
порядок неизвестен же. Если бы тсу понадобилось отсортировать 7 элементов он бы наверно сделал это руками. Стало быть велика веротность что таких элементов много или вообще неизвестно. А в таком случае делать часть сортировки вручную неприемлемо
sergeekа, ну и правильно, что убрали, - это же очередной эксперимент по типу “что из них больше приживётся”
это функция для доступа по ключу а не на сравнение. Я про cmp
Отредактировано py.user.next (Янв. 9, 2013 12:26:52)
Офлайн
43
py.user.nextя про то, скорее всего у тса исходная строка побольше, то есть, в
не, она конкретно написала, что по буквам оно должно быть отсортировано так, а по числам - по возрастаниюи последовательность эта может браться из файла, который создаётся другим скриптом
prefs = ('WTS', 'ACDW', 'SHR')
def otsortirovat(stroku): return "WTS16, WTS72, WTS1234, ACDW14, ACDW485, SHR16, SHR728"

Офлайн
В принципе, тот уродский код, что я привел, так и сортирует, как тс просил: не трогая сортировку по буквам, группирует их по цифрам. Я тогда внимательно просмотрел начальный и конечный пример и увидел именно такую закономерность: скажем если XWD25 шло раньше AMD11, то сначала будут все XWD, а после все AMD. Нет?
Офлайн
43
dimy44да, только возможно это была случайность
Нет?
И предлагаю закрыть уже тему, так как полные условия задачи от тса получены не были, а гадать не стоит.уродский кодзря недооцениваешь (или показываешь что недооцениваешь) себя, по мне он как раз таки самый правильный. Зря все таки убрали cmp, не городить же классы или то что у меня ради такой вот сортировки.
Отредактировано sergeek (Янв. 9, 2013 13:39:19)
Офлайн