Найти самое длинное и короткое название
задача найти самое короткое и длинное название города(формально). Выводится самое короткое название, а длинное нет. Не могу понять в чём проблема. Заранее спасибо. Вот код :
![]()
Не совсем ясно, почему в строке elif xmax == x11 or xmax == x22 or xmax == x33: используется elif. Замените на обычное if
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Python — найти самое короткое слово в списке
Привет всем, я знаю, возможно, было несколько похожих вопросов, но я был бы признателен, если бы вы могли дать мне более конкретное решение для моих попыток.
В основном программа должна вернуть кратчайшее слово в списке. Самое короткое слово не может быть пустой строкой. <- Я также не знаю, как это сделать.
Спасибо за помощь! 🙂
4 ответа
Вы можете просто использовать функцию build in min:
(word for word in l if word) является выражением генератора,
if word условие if word гарантирует, что пустые строки не используются,
key=len использует длину каждого слова для поиска minium
Вы всегда должны использовать встроенные функции, а не писать свои собственные (возможно, кроме случаев, когда вы учитесь). @Marcin очень хорошо описывает работу функции min , поэтому я хочу представить вам функцию filter в качестве замены выражений генератора.
Посмотрите, как min и filter могут работать вместе:
Он может быть менее интуитивным, по сравнению с решением @Marcin , но я предпочитаю использовать функции высокого порядка вместо генераторов. Чтение текста, где одно слово имеет 40% частоты ( word for word in l if word — 3/7) — нет, спасибо :).
Python-сообщество
1. Дан файл, компоненты которого — действительные числа. Найти наибольшее значение из компонент.
2. Найти длину самого короткого слова в строке.
3. В файле в начале каждой строки дозаписать количество слов в соответствующей строке.
#2 Ноя. 18, 2019 10:46:48
Задача на строки, файлы.
Отредактировано marvellik (Ноя. 18, 2019 11:19:26)
#3 Ноя. 18, 2019 23:21:59
Задача на строки, файлы.
#4 Ноя. 19, 2019 09:19:12
Задача на строки, файлы.
ну, перефразируя Остапа Бендера : пусть тот кто скажет что int это комплексные числа первым бросит в меня камень 
Отредактировано PEHDOM (Ноя. 19, 2019 09:19:41)
#5 Ноя. 20, 2019 19:45:29
Задача на строки, файлы.
doza_and
не уловил суть
#6 Ноя. 21, 2019 10:49:19
Задача на строки, файлы.
Отредактировано PEHDOM (Ноя. 21, 2019 10:50:17)
#7 Ноя. 21, 2019 11:53:07
Задача на строки, файлы.
Про упорядоченность комплексных чисел ничего не скажешь, так как они лежат на плоскости, а не на прямой.
Python — печать нескольких самых коротких и самых длинных слов из списка
Мне нужно просмотреть список и напечатать в нем самые длинные слова. Я могу сделать это только для одного слова, но не могу понять, как напечатать более одного, например, если есть два слова длиной в три буквы. я пытался
Это работает, но печатает только первое самое длинное слово, что не подходит для более чем одного самого длинного слова.
Я также пробовал:
Это также то же самое, что и предыдущий код
Мне также нужно сделать это для самого короткого слова в списке.
Извините, если это не очень хороший вопрос, это мой первый.
задан 06 фев ’13, 09:02
6 ответы
Во-первых, не всегда использование list в качестве имени переменной, так как оно переопределит встроенный тип и впоследствии может вызвать проблемы.
Вы можете сделать это для самых длинных слов:
И для самых коротких слов:
Первый код печатает строки, которые имеют ту же длину, что и самая длинная строка. Второй делает то же самое, но с самыми короткими строками.
Небольшой оптимизацией будет предварительное вычисление максимальной/минимальной длины перед циклом, поэтому вам не нужно пересчитывать ее каждый раз.
То же самое можно сделать и для другого цикла.

Извините, я просто использовал список для этого вопроса, и большое спасибо за ответ. — Якобсайши
Вы должны рассчитать max и min значения перед запуском цикла. Нет необходимости делать это снова и снова, и снова, и снова. — Матиас
@Matthias, спасибо за предложение, отредактировал его в своем ответе — Изменчивость
Ваш существующий код может быть изменен для работы без особых проблем. Вместо того, чтобы хранить одну строку в s , держать list строк. Если вы найдете ту же длину, что и предыдущая самая длинная, append Это. Если вы найдете еще более длинный, выбросьте его. list и начать новую. Как это:
Я обнаружил, что это намного проще и работает очень хорошо. Но есть ли способ адаптировать его для самого короткого слова? — Якобсайши
Для самого короткого слова я установил p как длину самого длинного слова, но есть ли лучший способ сделать это, так как самое короткое слово можно изменить, чтобы оно было больше этого значения. Я мог бы просто установить его на 100, но это выглядит немного безвкусно. — Якобсайши
Если вам нужно число, которое больше любого другого числа, используйте бесконечность, которая, к сожалению, пишется float(‘inf’) в Питоне. В остальном ваша вторая идея совершенно верна. (Вы также можете использовать sys.maxsize в данном случае это размер максимально возможной коллекции. Но бесконечность более идиоматична и очевидна, я думаю.) — Abarnert
Волатильность дает отличный ответ, но давайте рассмотрим другой способ сделать это.
Что, если бы у вас был не только список в отсортированном порядке, но и сгруппированный в пакеты одинаковой длины? Тогда это было бы легко: распечатать первую группу и распечатать последнюю группу.
И есть функция, которая поставляется с Python, которая делает эту группировку для вас, itertools.groupby , так что is легко:
Вы можете превратить это в однострочник:
Однако я не думаю, что в этом случае я бы стал; это повторилось key=len и все эти лишние скобки затрудняют чтение.
Между тем, вы можете не создавать весь список групп, когда вам действительно нужна только первая: