Найти - Пользователи
Полная версия: Оптимальная запись условия if
Начало » Python для новичков » Оптимальная запись условия if
1
DuffyDuck
Надо вывести из списка все индексы, кроме строк, начинающихся с буквы “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']
FishHook
 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')]
FishHook
Это учебная задача? Если нет, то вам срочно надо думать над архитектурой вашей программы
rami
 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']
DuffyDuck
FishHook
Это учебная задача? Если нет, то вам срочно надо думать над архитектурой вашей программы
Спасибо! Нет, это не учебная, это просто пришло мне в голову и я задумался. Почему надо думать об архитектуре?
DuffyDuck
rami
Спасибо!
FishHook
DuffyDuck
Почему надо думать об архитектуре?
Ну, потому что, если у вас есть список элементов случайного типа, надо задать себе вопрос, а как так получилось, зачем, а главное нахрена. То есть, вы же сначала где-то в вашей программе этот список создали. А потом придумываете костыль, с помощью которого боретесь с собственной структурой данных. Разумнее сделать сразу структуру с очевидным поведением. Ни в каких реальных проектах такой ерунды не бывает.
Это только в качестве гимнастики для ума имеет смысл, поэтому я и спросил.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB