列表理解,但在基于条件选择迭代的列表上

Mar*_*am 3 python list-comprehension list

我有两个列表list1,list2如下:

list1 = [4, 3, 20, 10]
list2 = ['a', 'f', 'd', 'b']
Run Code Online (Sandbox Code Playgroud)

我想result根据条件创建一个新列表,如果我的条件num==10True,那么result应该保留来自list1else 的内容,它应该持有内容list2.以下是我尝试过的代码:

num = 10
result = [element for element in list1 if num == 10 else list2]
Run Code Online (Sandbox Code Playgroud)

但这是在提高SyntaxError.我该怎么做到这一点?

上述代码的预期输出为:

[4, 3, 20, 10]  # stored in `result`
Run Code Online (Sandbox Code Playgroud)

jon*_*rpe 5

你只是遗漏了一些括号:

result = [element for element in (list1 if num == 10 else list2)]
Run Code Online (Sandbox Code Playgroud)

列表推导可以具有过滤条件(comp_if语言参考中),如下所示:

[a for a in b if c]
Run Code Online (Sandbox Code Playgroud)

在您当前的版本中,list1bnum == 10c,但您的附加功能else list2在语法上无效.

您需要明确表示您的条件表达式是其中的一部分b,您可以使用括号.