Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 3, 2020 07:49:16

DuffyDuck
Зарегистрирован: 2020-09-07
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимальная запись условия if

Надо вывести из списка все индексы, кроме строк, начинающихся с буквы “r”. Возможна ли запись этого условия более корректно:

 l = [4, 'read', 'item', 342, 'red', 23.5, 'alpha', 'bob', 'real']
l2 = []
for i in l:
  if isinstance(i, (int, float)):
    l2.append(i)
  if isinstance(i, str) and not i.startswith('r'):
    l2.append(i)
print(l2) #[4, 'item', 342, 23.5, 'alpha', 'bob']

Офлайн

#2 Дек. 3, 2020 14:01:49

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Оптимальная запись условия if

 l = [4, 'read', 'item', 342, 'red', 23.5, 'alpha', 'bob', 'real']
l2 = [i for i in l if not isinstance(i, str) or i.startswith('r')]



Офлайн

#3 Дек. 3, 2020 14:03:26

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Оптимальная запись условия if

Это учебная задача? Если нет, то вам срочно надо думать над архитектурой вашей программы



Офлайн

#4 Дек. 3, 2020 14:33:32

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Оптимальная запись условия if

 l = [4, 'read', 'item', 342, 'red', 23.5, 'alpha', 'bob', 'real']
 
l2 = [i for i in l if not str(i).startswith('r')]
 
print(l2)      #[4, 'item', 342, 23.5, 'alpha', 'bob']

Офлайн

#5 Дек. 3, 2020 14:39:36

DuffyDuck
Зарегистрирован: 2020-09-07
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимальная запись условия if

FishHook
Это учебная задача? Если нет, то вам срочно надо думать над архитектурой вашей программы
Спасибо! Нет, это не учебная, это просто пришло мне в голову и я задумался. Почему надо думать об архитектуре?

Офлайн

#6 Дек. 3, 2020 14:39:50

DuffyDuck
Зарегистрирован: 2020-09-07
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимальная запись условия if

rami
Спасибо!

Офлайн

#7 Дек. 3, 2020 16:35:17

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Оптимальная запись условия if

DuffyDuck
Почему надо думать об архитектуре?
Ну, потому что, если у вас есть список элементов случайного типа, надо задать себе вопрос, а как так получилось, зачем, а главное нахрена. То есть, вы же сначала где-то в вашей программе этот список создали. А потом придумываете костыль, с помощью которого боретесь с собственной структурой данных. Разумнее сделать сразу структуру с очевидным поведением. Ни в каких реальных проектах такой ерунды не бывает.
Это только в качестве гимнастики для ума имеет смысл, поэтому я и спросил.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version