可以这样写一行吗:<statement> if <cond> else <statement>
。我不是说a = 1 if 1 else 2
示例:
我有一个列表p
,它本身就有列表。假设我得到一个输入inputIter
。我想做以下工作:
for input in inputIter:
if <condition>: p+=[[input]] # generate new list
else: p[-1]+=[input] # append to latest list
然后我对自己说,一定有办法让它变成一行,所以我试着这样:
for input in inputIter:
p+=[[input]] if <condition> else p[-1]+=[input]
但这会产生
Syntax error: invalid syntax ^
(其中=
位于)。有解决办法吗?我知道这可能不是最好的例子。我知道它看起来有点难看。但在我看来,它是可读的
你不能把陈述和作业混在一起,不是吗
赋值是一个语句(
=
,+=
,等等)。赋值语句包含表达式(位于=
右侧的所有内容),但它本身不能在表达式内部使用。具体原因有:表达式中的赋值导致很难找到bug。经典的例子是混淆等式测试(==
)和赋值:参见Python FAQ
您正在尝试在条件表达式中的赋值之间切换,这在Python中是不允许的
只需使用
if
语句;在您的具体示例中,您可以使用:这个总是附加到最后一个嵌套列表,但是当
<condition>
是一个新列表时,空列表首先添加到末尾相关问题 更多 >
编程相关推荐