#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]