The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Августовский рейтинг языков программирования TIOBE, opennews (??), 14-Авг-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


24. "Августовский рейтинг языков программирования TIOBE"  –4 +/
Сообщение от Аноним (24), 14-Авг-22, 09:15 
Раз тут все питонисты собрались, подскажите, как сделать проверку множественных условий в python и получение значений по нему, как можно короче. Типа

{x < 20: 0, x<5: 1, x>3: 2, x=4: 3}. не горы текста с лямбдами и функциями, а просто словарик условий, по которому получается значение?

Ответить | Правка | Наверх | Cообщить модератору

31. "Августовский рейтинг языков программирования TIOBE"  +1 +/
Сообщение от Аноним (31), 14-Авг-22, 09:43 
Поскольку у тебя на входе x постоянно разный, тебе придётся генерировать этот словарик при каждой проверке - а это жутко неэффективно. Почему же просто не отделаться длинным if, красивенько разнеся его на несколько линий?
Ответить | Правка | Наверх | Cообщить модератору

43. "Августовский рейтинг языков программирования TIOBE"  +1 +/
Сообщение от Аноним (24), 14-Авг-22, 10:03 
вот и хочется завернуть оператор, как функцию :) чтобы вызывать его по условию. накостылял в одну строку             bgi = 0 if pp > 10 else 1 if pp > 2.5 else 2 if pp > 1 else 3 if pp < -10 else 4 if pp < -2.5 else 5 if pp < -1 else 6 if pp < 0  else None

но хотелось бы покороче и покрасивше :)

Ответить | Правка | Наверх | Cообщить модератору

49. "Августовский рейтинг языков программирования TIOBE"  +/
Сообщение от Аноним (47), 14-Авг-22, 10:54 
https://peps.python.org/pep-0636/#appendix-a-quick-intro
Ответить | Правка | Наверх | Cообщить модератору

245. "Августовский рейтинг языков программирования TIOBE"  +2 +/
Сообщение от Аноним (-), 15-Авг-22, 03:52 
Бливотная Мишанина Ифов.

bgi = 7 - bisect([-10, -2.5, -1, ...], pp)

Както так. Или если тебе неманатонно надо номер интервала отображать, то:

bgi = [7, 4, 1, ...][bisect([тут интревалы], pp)]

Я не спец в пайтоне, так между делом бывает строку кода напешу... может ему планку сорвёт от индексации в массив-летерал? Но ты попробуй, а вдрук покатит.

Ответить | Правка | К родителю #43 | Наверх | Cообщить модератору

246. "Августовский рейтинг языков программирования TIOBE"  +/
Сообщение от Аноним (24), 15-Авг-22, 06:15 
А что с диапазоном от 0 до 1, который if-ами не покрывается и у меня выдаёт None?
Ответить | Правка | Наверх | Cообщить модератору

283. "Августовский рейтинг языков программирования TIOBE"  +1 +/
Сообщение от Аноним (282), 15-Авг-22, 09:59 
Да никак не слушай бред выше.
Ответить | Правка | Наверх | Cообщить модератору

397. "Августовский рейтинг языков программирования TIOBE"  +/
Сообщение от Аноним (397), 15-Авг-22, 18:13 
То же самое. Не вижу в чем у тебя проблема возникла.
Ответить | Правка | К родителю #246 | Наверх | Cообщить модератору

32. "Августовский рейтинг языков программирования TIOBE"  +2 +/
Сообщение от Аноним (32), 14-Авг-22, 09:46 
Гирлянда if/elif/else либо новомодный match/case.
Можно и в однострочник завернуть типа val1 if cond else val2.
Ответить | Правка | К родителю #24 | Наверх | Cообщить модератору

436. "Августовский рейтинг языков программирования TIOBE"  +/
Сообщение от Аноним (436), 16-Авг-22, 05:43 
```
def multi_cond(x):
    def wrap():
        return False not in{x < 20: 0, x<5: 1, x>3: 2, x==4: 3}
    return wrap

multi_cond(10)()
False

multi_cond(4)()
True
```

Сойдет?

Ответить | Правка | К родителю #24 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру