Оператор '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]
Другие вопросы по тегам