| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Python] Сортировка слов по длине |
| Автор: Paranorma 4.2.2007, 00:35 | ||
| У меня просто уже ни одной умной мысли в голове, как это правильно составить. Суть такова, что сперва в список помещаются строки, а затем сортируются в словаре по длине строки. Строки длинной в 5 символов в одной группе, строки в 10 символов в другой группе (на самом деле кол-во знаков в строке может быть любым). Мне честно говоря, не совсем понятен алгоритм, но ответ в калькуляторе Питон дожен быть таким: {'h': 5, 'j': 10, 'v': 20} То есть значением будет длина строки... Я написала пока так:
Что дальше делать? |
| Автор: Paranorma 4.2.2007, 14:49 |
| Спасибо большое, меня препод малость ввел в заблуждение. Препод просто не так давно занялся преподаванием, а потому, не имея опыта, иногда нечетко формулирует мысли. Я сегодня у него уточнила. Должно выглядеть так: Введенный список: ["123", "45" "abcd", "xy", "klm"] Результат: { 2:["45", "xy"], 3:["123", "klm"], 4:["abcd"] } Ключ - длинна строки, значение - список слов данной длинны. |
| Автор: V.A.KeRneL 4.2.2007, 17:37 | ||
Нда, твоего бы препода...
З.Ы. Paranorma, если ты таки хочешь когда-нибудь как-нибудь научиться хотя бы кодить (программирование — это не только кодинг), то учись юзать встроенную справку и google.com, а если нет, то так держать. |
| Автор: Strannik 4.2.2007, 18:14 | ||
Это что за сортировка такая? Я тоже знаю прикольную сортировку, за О(N!). |
| Автор: Void 4.2.2007, 18:45 | ||||
=>
|
| Автор: V.A.KeRneL 4.2.2007, 18:45 | ||||||||
Не, гномья не крэйзи, она нормальная. Довольно новая просто, не классическая. Она работает за время O(n^2), на практике обычно немного медленнее, чем пузырьковая, хотя это уже зависит от особенностей архитектуры системы и реализации алгоритма. Отличается исключительной простотой и лаконичностью кода:
Автор небезосновательно называет своё творение самым простым алгоритмом сортировки. http://www.google.com/search?hl=en&q=Gnome+Sort&btnG=Google+Search http://en.wikipedia.org/wiki/Gnome_sort http://www.cs.vu.nl/~dick/gnomesort.html (она же была первой ссылкой в Гугле) http://www.nist.gov/dads/HTML/gnomeSort.html http://keithdevens.com/wiki/n-squared-sort-comparison
Да, и я знаю такие «алгоритмы». Но вот это уже, по-моему, действительно, глупость, потому что верхний предел сложности не ограничен и при желании можно придумывать всё более сложные алгоритмы, например за время N^N^...^N (N paз), или (((N!)!)...)!, далее можно комбинировать/композиционировать эти функции, и т.д. |
| Автор: Paranorma 4.2.2007, 21:45 | ||||||
Всем спасибо! Блин! Нет, я все понимаю, конечно, просто, пожалуйста, помогите на начальных этапах. Есть пара вопросов: Во-первых, что значит эта строка b = " ".join(a).split() Конкретно, что значит join? Я тут буквально одну строку в программе поправила:
И еще один вопрос: как сделать, что б и пробел учитывался как символ строки? Вот пример: Список: ["12 3", "4 5", "abcd", "xy", "klm"] Результат: {2:["xy"], 3:["4 5", "klm"], 4:["12 3", "abcd"] } Еще раз прошу меня простить и заранее всем спасибо! |
| Автор: Strannik 4.2.2007, 23:16 |
| V.A.KeRnel, эту сортировку я знал, только не знал что она гномья. А так, пузырёк - 4 строчки да и вообще я почти всегда кучу пишу, для тренировки. |
| Автор: V.A.KeRneL 4.2.2007, 23:23 | ||||||
Пожалуйста. Крута-а-а!.. Научи! А то я мало, что знаю и понимаю. Чуть перефразируя известное изречение: «Единиственное, что я знаю, это то, что я нихрена не знаю. ))» ОК. Тока заруби на носике, что эти пресловутые «начальные этапы» не могут длиться вечно. На практике они не должны затягиваться более, чем на полгода (в крайнем случае год). Далее надо уметь пользоваться документацией (естественно, большая и самая ценная её часть представлена на английском языке — современном международном и программистском профессиональном языке) и поисковиками.
Вот тут и надо воспользоваться http://www.google.com/search?hl=en&q=python+join&btnG=Google+Search, потыкать по ссылочкам с 1-ой страницы, среди них найти что-нибудь вроде http://www.wellho.net/resources/ex.php4?item=y108/bejo.py: split and join Example from a Well House Consultants training course SOURCE CODE
Если непонятно, то скажу, что метод sep.join(list) возвращает строку из списка слов `list', сцеплённого разделителями `sep', а метод str.split([sep]), напротив, разбивает строку `str' [по разделителю `sep'] на слова (строки).
Так как сделат-то нужно, чтобы в списке были не слова, как в предыдущей твоей задаче, а полные введённые пользователем строки? Если так, то строки ``b = " ".join(a).split()'', как раз, и не надо, а нужно проходиться циклом по списку `a': ``for word in a: '' Обращайся. |
| Автор: Strannik 4.2.2007, 23:32 | ||
Хи, а у меня начальный этап в изучении С++ продлился 3,5дня, т.к. вчера я уже участвовал в SRM на TopCoder. Для того что бы выучить язык(программирования) нужно кроме литературы и гугла как можно больше говорить(программировать) на нём. Добавлено @ 23:35 V.A.KeRnel, Интересно, а почему все темы Paranorma'ы плавно переходят в наш с тобой оффтоп??? |
| Автор: Paranorma 5.2.2007, 00:14 |
| Значит вы любители оффтопа |
| Автор: Paranorma 5.2.2007, 13:54 | ||
Please, help! Помогите это поправить. У меня на печать выводиться только последняя введенная строка, вместо всех введенных. Да тут именно введенные строки уже, а не слова, как в прошлый раз.
|
| Автор: V.A.KeRneL 5.2.2007, 15:15 | ||
Так что ли? (Строки должны все выводиться нормально...) |
| Автор: Paranorma 5.2.2007, 16:00 |
| Нижайший всем поклон |
| Автор: pythonwin 10.2.2007, 14:25 |
| Paranorma, ты решила проблему? покажи, пожалуйста, работающий код. это не флейм - цель сделать архив в ЦП по языкам, в данном случае по питону тема обсуждается http://forum.vingrad.ru/topic-130354/kw-%F6%E5%ED%F2%F0-%F4%E8%EB%FC%F2%F0.html |
| Автор: Paranorma 10.2.2007, 17:22 | ||
|