Python: выберите другое значение

#python #list

#python #Список

Вопрос:

Пожалуйста, извините (или улучшите название), но у меня небольшая глупая проблема, которая делает меня очень неуверенным.

У меня есть список, который может содержать от одного до двух значений, никогда не больше, никогда не меньше, и только эти два параметра:

 options = ['option one', 'option two']
  

Как я уже говорил, иногда в списке может быть только одно из этих значений, поэтому оно может быть просто ['option two',]

Область применения для этого — простая навигация по веб-сайту. Я принимаю ввод строки запроса и ищу в списке эти параметры:

 current_option = request.GET.get('option', options[0])
if not current_option in options: current_option = options[0]
  

Если «опция» не указана, по умолчанию используется первая доступная опция.

Но теперь я хочу знать, что такое другой вариант. Если "option one" это входные данные, я хочу "option two" . И если есть только "option one" в options списке, например, я хочу, чтобы возвращаемое значение было False .

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

Ответ №1:

 options.remove(current_option)
options.append(False)
return options[0]
  

Редактировать: Если вы не хотите вносить изменения options , вы также можете использовать несколько менее читаемый

 return (options   [False])[current_option == options[0]]
  

Комментарии:

1. Гораздо лучший ответ, чем мой. 😛

2. Второй подход прекрасен.

Ответ №2:

 current_option = request.GET.get('option', options[0])
if not current_option in options:
    current_option = options[0]
else:
    oindex = options.index(current_option)
    other_option = False if len(options) != 2 else options[(oindex 1) % 2]