Оператор 'else' в списках
У меня есть переменная, которая может быть либо строкой, либо кортежем (я не знаю заранее), и мне нужно работать с ней как со списком.
По сути, я хочу превратить следующее в понимание списка.
variable = 'id'
final = []
if isinstance(variable, str):
final.append(variable)
elif isinstance(variable, tuple):
final = list(variable)
Я думал что-то вроде следующего (что дает мне синтаксическую ошибку).
final = [var for var in variable if isinstance(variable, tuple) else variable]
Я видел этот вопрос, но это не то же самое, потому что спрашивающий мог использовать for
петля в конце; моя применяется только если это кортеж.
ПРИМЕЧАНИЕ: я хотел бы, чтобы понимание списка работало, если я использую isinstance(variable, list)
так же хорошо как tuple
один.
2 ответа
Решение
Я думаю, что вы хотите:
final = [variable] if isinstance(variable, str) else list(variable)
Вам просто нужно немного переставить.
final = [var if isinstance(variable, tuple) else variable for var in variable]
Или, может быть, я неправильно понял, и вы действительно хотите
final = variable if not isinstance(variable, tuple) else [var for var in variable]