Python ';其他';列表理解中的语句

Python ';其他';列表理解中的语句,python,list-comprehension,Python,List Comprehension,我有一个变量,可以是字符串或元组(我事先不知道),我需要将其作为列表使用 本质上,我想把下面的内容转换成一个列表 variable = 'id' final = [] if isinstance(variable, str): final.append(variable) elif isinstance(variable, tuple): final = list(variable) 我在想下面的事情(这给了我一个语法错误) 我见过这个,但它不一样,因为询问者可以在末尾使用fo

我有一个变量,可以是字符串或元组(我事先不知道),我需要将其作为列表使用

本质上,我想把下面的内容转换成一个列表

variable = 'id'
final = []
if isinstance(variable, str):
    final.append(variable)
elif isinstance(variable, tuple):
    final = list(variable)
我在想下面的事情(这给了我一个语法错误)

我见过这个,但它不一样,因为询问者可以在末尾使用
for
循环;我的只有当它是一个元组时才适用


注意:如果我使用
isinstance(variable,list)
以及
元组
一,我希望列表理解能起作用。

你只需要重新排列一下

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]
我想你想要:

final = [variable] if isinstance(variable, str) else list(variable)

这将为示例提供
['id','id']
,因为它为每个字母包含一个字符串引用。谢谢!你的第二个似乎正是我想要的。我接受了Matthew的,因为它稍微短一点,也简单一点(因为他做了
list(variable)
而不是
[var for var in variable]
,尽管它们是一样的东西。)为什么你需要它是一个字符串或元组?为什么不能是unicode或列表呢?我不确定列表理解在这里有什么用处,因为您的代码没有通过迭代创建列表。你甚至没有for循环。我的代码不需要for循环。但是如果我在列表理解中使用
列表(变量
),它会在列表中创建一个不是我想要的列表(尽管我注意到@Matthew的答案提供了一种解决方法)。而且@aron:我不需要它是字符串或元组。它是以那种格式提供给我的。谢谢!这正是我想要的。
final = [variable] if isinstance(variable, str) else list(variable)