Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
-28 / 0 / 0
Регистрация: 26.03.2025
Сообщений: 168

Как написать код в одну строку

11.04.2025, 21:00. Показов 2602. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Python
1
2
if next((p for p in psutil.process_iter() if p.name() == 'ffmpeg'), None):
    exit('Stop')
Возможно иначе прописать, в одну строчку, короче?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.04.2025, 21:00
Ответы с готовыми решениями:

Как написать строку в цикле в одну строку?
Как написать строку в цикле в одну строку? Задача: (лучше без списков,мы пока их не проходили, я...

Возможно ли укоротить данный код и записать в одну строку. И вообще как научиться укорачивать код)
lst = list() for i in range(2): lst.append(int(input())) print(max(lst))

Как написать и прочесть две переменные в одной строке txt файла?
Вопрос не сильно связан с VkBottle, но я Столкнулся с проблемой: Решил создать бота, в котором...

22
260 / 34 / 7
Регистрация: 03.02.2025
Сообщений: 118
11.04.2025, 23:01
Fixmon, вот этот вариант попробуй.
Python
1
if next((p for p in psutil.process_iter() if p.name() == 'ffmpeg'), None): exit('Stop')
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
12.04.2025, 07:31
Цитата Сообщение от Fixmon Посмотреть сообщение
Возможно иначе прописать, в одну строчку, короче?
- зачем?
1
12.04.2025, 07:51

Не по теме:

Catstail, у ТСа нездоровая тяга к минимализму.

0
 Аватар для ViachaslauK
122 / 179 / 16
Регистрация: 08.10.2024
Сообщений: 635
12.04.2025, 09:03
Цитата Сообщение от Catstail Посмотреть сообщение
- зачем?
Никогда не встречал код на 5- 10 тысяч строк?
Цитата Сообщение от Fixmon Посмотреть сообщение
Возможно иначе прописать, в одну строчку, короче?
тернарный оператор:
Python
1
exit('Stop') if next((p for p in psutil.process_iter() if p.name() == 'ffmpeg'), None) else None
0
Любознательный
 Аватар для YuS_2
7404 / 2249 / 360
Регистрация: 10.03.2016
Сообщений: 5,198
12.04.2025, 09:16
ViachaslauK, стесняюсь спросить, а точно не забыт сам вопрос:
Цитата Сообщение от Fixmon Посмотреть сообщение
в одну строчку, короче
?

Для сравнения:
было:
Python
1
if next((p for p in psutil.process_iter() if p.name() == 'ffmpeg'), None): exit('Stop')
стало:
Python
1
exit('Stop') if next((p for p in psutil.process_iter() if p.name() == 'ffmpeg'), None) else None
Возможно, у меня старомодные представления о мерах длины... но, может быть, как-то иначе надо было?
2
 Аватар для ViachaslauK
122 / 179 / 16
Регистрация: 08.10.2024
Сообщений: 635
12.04.2025, 09:27
Цитата Сообщение от YuS_2 Посмотреть сообщение
Возможно, у меня старомодные представления о мерах длины.
Тут уже не в длине а в читабельности. В тернарнике на первое место выносится результат - заверешение. Потом - условие
Иногда, когда дебажишь тысячи строк - такое легче читается и воспринимается.
В приведенном варианте условие записано в одну строку - это не оптимизация а нарушение правил написания кода в питон.
А если уж оптимизировать:
Python
1
exit('Stop') if any(p.name() == 'ffmpeg' for p in psutil.process_iter()) else None
0
Любознательный
 Аватар для YuS_2
7404 / 2249 / 360
Регистрация: 10.03.2016
Сообщений: 5,198
12.04.2025, 10:08
Цитата Сообщение от ViachaslauK Посмотреть сообщение
Тут уже не в длине а в читабельности.
То бишь, условия ТС-а позабыты?

Цитата Сообщение от ViachaslauK Посмотреть сообщение
нарушение правил написания кода в питон
Нарушение правил... просто обязано вызывать исключение... оно присутствует? Нет? Значит это не нарушение...

Цитата Сообщение от ViachaslauK Посмотреть сообщение
если уж оптимизировать
Просто, лично я думаю так: если ТС хотел код короче, то либо показать как это сделать, либо объяснить "что такое хорошо и что такое плохо" (но зачастую, на такие объяснения почему-то обижаются ТС-ы, поэтому вариант - не отвечать совсем, наиболее часто встречается )
3
 Аватар для ViachaslauK
122 / 179 / 16
Регистрация: 08.10.2024
Сообщений: 635
12.04.2025, 10:29
Цитата Сообщение от YuS_2 Посмотреть сообщение
Нарушение правил... просто обязано вызывать исключение... оно присутствует? Нет? Значит это не нарушение...
black например такой код не пропустит.
Цитата Сообщение от YuS_2 Посмотреть сообщение
То бишь, условия ТС-а позабыты?
Условия ТС - код в одну строку
Условие выполнено. Про длину не было речи. Но тут про PEP не забываем
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
12.04.2025, 10:37
Цитата Сообщение от ViachaslauK Посмотреть сообщение
Никогда не встречал код на 5- 10 тысяч строк?
- встречал и писал сам на порядки больше. И что? Малое количество строк - это хорошо? Отнюдь. Главное требование к коду - понятность. Для чего? Для того! Код нужно сопровождать и дорабатывать. А для этого он должен быть прозрачным. Если же код пишется для однократного применения - то это говнкод.

Уменьшение количества строк не способствует понятности. Скорее, наоборот. Вот пример. Язык регулярных выражений очень лаконичен. Это общеизвестный факт. Поэтому внести изменение в сколь-нибудь сложное регулярное выражение - задача невообразимой сложности. Обычно при необходимости регэксп переписывают. Вот она, реальная цена краткости.

Еще пример (давно ставший классическим). Задача: имеется целая переменная i. Ее значение равно 1 или 2. Если значение i==1, то нужно присвоить i двойку, а если i==2, то единицу.
Вот два решения - нормальное:

Python
1
2
3
4
if (i==1):
   i=2
else:
   i=1
короткое:

Python
1
  i=3-i
Какое лучше? С моей т.з. конечно первое! Почему? Потому, что оно соотносится с постановкой задачи. А второе требует размышлений. И не надо писать, что ко второму можно добавить комментарий! Можно, но количество строк возрастёт и сравняется с размером хорошего решения.

Резюме:

Когда я вижу соревнование в писании "однострочников", я недоумеваю - зачем? В промышленном программировании за однострочники нужно отрывать @#$ наказывать.

Возражения есть?
1
Любознательный
 Аватар для YuS_2
7404 / 2249 / 360
Регистрация: 10.03.2016
Сообщений: 5,198
12.04.2025, 11:09
Цитата Сообщение от ViachaslauK Посмотреть сообщение
Условие выполнено. Про длину не было речи.
Хмм... всё же, процитирую ещё раз:
Цитата Сообщение от Fixmon Посмотреть сообщение
Возможно иначе прописать, в одну строчку, короче?
слово "короче" - что означает? Связку слов? Ну, может быть... наверное... да нет... русский языка - он оченно богат, однако!
Очень важно, в программировании, во всяком случае, ясно выражовываться... иначе получается то, что получается...
Но, я бы ТС-у задал тот же вопрос:
Цитата Сообщение от Catstail Посмотреть сообщение
- зачем?
Ну, любопытно же! Что за "соревнование"?

Цитата Сообщение от ViachaslauK Посмотреть сообщение
Но тут про PEP не забываем
Кстати, о птичках...
Какое из правил pep8 запрещает (ну или хотя бы 'не рекомендует', что не обязательно к исполнению, в общем-то) такую запись:
Python
1
if True: print('True')
?
1
260 / 34 / 7
Регистрация: 03.02.2025
Сообщений: 118
12.04.2025, 23:13
Я ещё начинающий программист, из-за этого согласен с тем, что пусть код будет больше но понятней. Чем код маленький но над которым нужно долго думать.
1
 Аватар для ViachaslauK
122 / 179 / 16
Регистрация: 08.10.2024
Сообщений: 635
13.04.2025, 22:09
Цитата Сообщение от YuS_2 Посмотреть сообщение
Какое из правил pep8 запрещает (ну или хотя бы 'не рекомендует', что не обязательно к исполнению, в общем-то) такую запись:
PythonСкопировано
1
if True: print('True')
PEP8
"Compound statements (multiple statements on the same line) are generally discouraged."
"Such constructs hamper readability."
Линтерами не пользуешься?

Добавлено через 5 минут
Цитата Сообщение от Catstail Посмотреть сообщение
Вот два решения - нормальное:
Я не знаю, какой код ты писал на десятки тысяч строк, но у нас за такое отрывают руки сразу. Я уже даже индусов отучил.
В простых случаях - тернарники.
Для студентов на лекции - да. Но не в рабочем коде
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
14.04.2025, 06:10
Цитата Сообщение от ViachaslauK Посмотреть сообщение
Я не знаю, какой код ты писал на десятки тысяч строк, но у нас за такое отрывают руки сразу. Я уже даже индусов отучил. В простых случаях - тернарники. Для студентов на лекции - да. Но не в рабочем коде
- в чем принципиальная разница между if и тернарником? Ты сможешь это убедительно объяснить? Хамство на первый раз прощаю. Мои проекты можешь поискать в Сети и на Форуме. А где увидеть твои?
0
 Аватар для ViachaslauK
122 / 179 / 16
Регистрация: 08.10.2024
Сообщений: 635
14.04.2025, 09:22
Цитата Сообщение от Catstail Посмотреть сообщение
- в чем принципиальная разница между if и тернарником?
Мне непонятен вопрос в контексте темы. С точки зрения байткода - разницы не будет. С точки зрения читабельности - да. Естественно, естественно что для применения тернарников есть масса ограничений. Твой пример в него прекрасно кладется, но если честно, для кода ТСа я бы никогда не стал применять тернарник на практике, потому что он уже усложняет читабельность.
Цитата Сообщение от Catstail Посмотреть сообщение
Мои проекты можешь поискать в Сети и на Форуме.
Я слишком мало о тебе знаю, чтобы вот так просто поискать твои проекты в сети. В блоге ты в основном пишешь про преподавание, шерстить 34 тысячи сообщений у меня, извини возможности нет. Могу написать, конечно парсер, который соберет все твои сообщения, оптимизирую из, скормлю в RAG и попробую с помщью какой-нибудь модели поискать твои проекты, но это не то, на что хотелось бы тратить время.
Но если дашь ссылки - с удовольствием ознакомлюсь. Твоя компетентнасть в сфере обучения, кстати не подлежит сомнению.
Мне жаль если ты увидел в моих словах хамство.
Лично я пишу только на Питоне, к сожалению, большинство проектов, в которых я участвовал, находятся под NDA. Я работаю в команде и у меня нет своих проектов последние 10 лет. Из интересного и что можно рассказать - мой сервис использует для обучения сотрудников Daimler, примерно 40% cделок по продаже автомобилей в Северной Америке через дилеров и аукционы используют систему подготовки документов, в написании которой я принимал участие. Текущий проект самый интересный, связан с медиа и юриспруденцией но тут я прям связан по рукам и ногам.
0
Любознательный
 Аватар для YuS_2
7404 / 2249 / 360
Регистрация: 10.03.2016
Сообщений: 5,198
14.04.2025, 10:53
Цитата Сообщение от ViachaslauK Посмотреть сообщение
"Compound statements (multiple statements on the same line) are generally discouraged."
"Such constructs hamper readability."
1. Разве это запрет? "обычно не рекомендуется" - совсем даже не строгая рекомендация.
2. В данной цитате требует расшифровки определение "составные операторы"
3. пояснение по пункту 2, там ведь следующим пунктом идет: "While sometimes it’s okay to put an if/for/while with a small body on the same line, never do this for multi-clause statements." То бишь, если условный блок состоит из одного "if, условия и действия", то это вполне допустимо.
4. Не имеет смысла экстраполяция правил, принятых в команде, в которой Вы работаете, абсолютно на всех, с кем Вы пытаетесь общаться на тематику по программированию.
5. И как вишенка на торте, из того же pep8:

Если подобный стиль "не рекомендуется", то и не надо его приводить в качестве примера, в том же самом документе, пусть и по другому поводу.

и таки ещё раз, как главный аргумент:
Цитата Сообщение от YuS_2 Посмотреть сообщение
Нарушение правил... просто обязано вызывать исключение
если исключения нет, значит это не нарушение правил.

Цитата Сообщение от ViachaslauK Посмотреть сообщение
Линтерами не пользуешься?
Нет, а что?. Я не профессиональный программист... скорее, это занятие для души.
0
 Аватар для ViachaslauK
122 / 179 / 16
Регистрация: 08.10.2024
Сообщений: 635
14.04.2025, 11:34
Цитата Сообщение от YuS_2 Посмотреть сообщение
Нет, а что?. Я не профессиональный программист... скорее, это занятие для души.
Понятно. С этого надо было и начинать. Не вижу дальше смысла что-то втолковывать. Для души ты можешь писать как хочешь. Если хочешь зарабатывать на хлеб с маслом - так не прокатит.
Чтоб ты понимал - при старте проекта мы оговариваем не просто какие будут исользоваться библиотеки, системы, и даже линтеры. А даже какие кавычки в должны использоваться - одинарные или двойные. Нет времени исправлять это потом. Скрам штука жестокая)
Простой пример, коть и немного в сторону. На прошлой неделе нужно было написать документацию к проекту. У нас Сфинкс и Хеликс. Я нечасто таким занимаюсь, поэтому не помню весь синтаксис .md документации. Делаю один пул реквест - код уходит в основную ветку, но дока не обновляется, делаю второй с мелкими фиксами - та же фигняю. Лезу уже разбираться, что за на?
А оказывается что в репозитории github actions настроены так, что любой билд остается зеленым, что бы увидеть ошибки нужно в него лезть и смотреть. А должно быть так - не прошла верификация - поличил ошибку. Дорогие индусы постарались))) В своих репозиториях я их приучил уже что ни строчки кода без тестирования и линтеров. А тут бардак, в итоге работу на 4-5 часов не могу уже неделю закончить.
0
Любознательный
 Аватар для YuS_2
7404 / 2249 / 360
Регистрация: 10.03.2016
Сообщений: 5,198
14.04.2025, 11:55
Цитата Сообщение от ViachaslauK Посмотреть сообщение
Чтоб ты понимал
Чтобы ты понимал: я не против правил принятых в узком кругу лиц, занимающихся программированием и какими-либо проектами. Это правила, которые оговорены для конкретной команды. Естественно, их следует выполнять, если ты работаешь или хочешь работать в этой команде.
В общем:
Цитата Сообщение от ViachaslauK Посмотреть сообщение
при старте проекта мы оговариваем
Цитата Сообщение от YuS_2 Посмотреть сообщение
4. Не имеет смысла экстраполяция правил, принятых в команде, в которой Вы работаете, абсолютно на всех, с кем Вы пытаетесь общаться на тематику по программированию.
независимо от километров уже написанного тобой кода.
Так понятнее? Не навязывай своих представлений о "правильнописании кода" всем подряд, с кем общаешься... как правило, это заканчивается конфликтами на пустом месте и никакого конструктива не наблюдается. Ты ведь не на собеседовании и ты не интервьюер, а окружающие не интервьюируемые.
Да, есть какие-то общепринятые стили и даже правила... но спорные и тонкие моменты, лучше не навязывать. Можно лишь порекомендовать или оговорить, что вот так, мол лучше было бы, ибо понятнее для окружающих. Но не в виде резких, рубленных фраз о каких-то гипотетических нарушениях. Вот я о чем.
1
 Аватар для ViachaslauK
122 / 179 / 16
Регистрация: 08.10.2024
Сообщений: 635
14.04.2025, 12:31
Цитата Сообщение от YuS_2 Посмотреть сообщение
Не навязывай своих представлений о "правильнописании кода" всем подряд, с кем общаешься...
Ты из персон, которые хотят, чтобы последнее слово осталось за ними, поэтому очень вольно интерпретируют ответы собеседника. Еще раз, финально - мне не интересно спорить об очевидном с теми кто пытатеся применять какую-то свою логику. Есть ошибки в коде, есть нарушения codestyle. И то и другое имеет свой уровень влияния на работу. Явная ошибка приведет к исключению, нарушение codestyle - к ненужной трате времени на понимание кода. Любитель может себе позволить это, профессионал - нет. Есои для тебя Гугл - узкие круг - окей.
Тупиковый спор. На вопрос привел выдержку из ПЕП - пошли новые аргументы. Если ты не знал - код читается по вертикали - с верху вниз. И когда просят написать короче - имеют ввиду именно это. Опять же поправлюсь - в кругу профессионалов, не любителей. А по горизонтали существует снова ПЕП, который ограничивает длину строки.
На этом все - всего хорошего!
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
14.04.2025, 13:04
Цитата Сообщение от ViachaslauK Посмотреть сообщение
Мне непонятен вопрос в контексте темы. С точки зрения байткода - разницы не будет.
- а с точки зрения прозрачности - будет. Тернарник воспринимается труднее.

Цитата Сообщение от ViachaslauK Посмотреть сообщение
Я слишком мало о тебе знаю, чтобы вот так просто поискать твои проекты в сети.
Цитата Сообщение от ViachaslauK Посмотреть сообщение
Но если дашь ссылки - с удовольствием ознакомлюсь.
- пришлю в личку, чтобы не было пиара.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.04.2025, 13:04
Помогаю со студенческими работами здесь

Проверить, лежат ли квадраты: На одной диагонали, На одной вертикали, На одной горизонтали
Квадраты при игре в крестики-нолики занумерованы, как показано ниже. Заданы номера трех квадратов:...

Написать скрипт, который выводит все строки файла содержащие хотя бы одно плохое слово
Пролог: Учусь на курсах Интернет-программирование. В программе язык Piton, котор., как объяснил...

Написать функцию order, которая отсортирует заданную строку. Каждое слово в строке # содержит одну цифру. Эта цифра - по
Написать функцию order, которая отсортирует заданную строку. Каждое слово в строке # содержит одну...

Написать функциию нахождения суммы столбца в одну строку
На вход подаются данные в форме двумерных «матриц», количество матриц заранее не определено,...

Как записать, чтобы не в отдельной строке задавались цифры и знаки, а шли в одной строке друг за другом без пробелов?
Привет всем! Я заочник (не программист специализация) дали задание по Python: "Программа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru