列表理解,其中 if 条件在循环之前是第一个

List comprehension where if condition is first before loop

您如何将以下条件转化为列表理解?

a = list()
if inputs is not None:
   for i in inputs:
      a.append(my_function(i))
else:
   a.append(my_function())

我在想:

a = [my_function(input) for input in inputs else my_function() if inputs is not None]

但出现错误。

注意:这只是一个带有伪名称的伪代码。抱歉造成混淆。

您的 if 需要在列表理解之外:

a = [my_function(i) for i in inputs] if inputs is not None else my_function()

我把input改成了i,因为input是内置函数。

您的函数编写方式,您真正需要的是:

a = my_function(inputs[-1]) if inputs is not None else my_function()

除非my_function有副作用。那么你可以使用:

a = [my_function(i) for i in inputs][-1] if inputs is not None else my_function()

因为你一直在循环中覆盖 a 所以只保留最后一次调用。

a = [my_function()] if inputs is None else [my_function(i) for i in inputs]