оператор 'else' в списках - PullRequest
       7

оператор 'else' в списках

0 голосов
/ 24 сентября 2010

У меня есть переменная, которая может быть либо строкой, либо кортежем (я не знаю заранее), и мне нужно работать с ней как со списком.

По сути, я хочу преобразовать следующее в понимание списка.

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 ]

5 голосов
/ 24 сентября 2010

Я думаю, что вы хотите:

final = [variable] if isinstance(variable, str) else list(variable)
2 голосов
/ 24 сентября 2010

Вам просто нужно немного переставить.

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