Python 使用列表理解简化for循环和if语句

Python 使用列表理解简化for循环和if语句,python,list-comprehension,Python,List Comprehension,我希望通过理解简化以下列表: for contract in response: if contract['symbol'] == symbol: price = contract['lastPrice'] 我提出了: [contract for contract in response if contract['symbol'] == symbol]: price = contract['lastPrice'] 但我不确定这种语法是否

我希望通过理解简化以下列表:

for contract in response:
        if contract['symbol'] == symbol:
            price = contract['lastPrice']
我提出了:

[contract for contract in response if contract['symbol'] == symbol]:
        price = contract['lastPrice']
但我不确定这种语法是否正确。

给你

price = [contract["lastPrice"] for contract in response if contract["symbol"] == symbol]

print(price)
理解不是python中的复合代码块,而只是在一行代码中定义特定for循环的表达式。由于您的问题是关于列表理解的,列表理解是以表达式的形式表示lop(带或不带某些条件)的一种方式,该表达式返回一个列表作为结果。 您还可以通过使用字典理解获得dict()作为结果

编辑
如果这是您问题的答案,请将其标记为已接受。谢谢

我不认为你需要简化这个。它非常清晰易读,语法完全错误;我不知道你为什么对它的错误感到惊讶。请复习你的教学材料。@TigerhawkT3我并不惊讶,我知道它不正确。我在问为什么它是不正确的,并寻找如何修复它查看有关理解的教学材料。你的尝试表明了一些基本的误解——例如,理解是表达,而不是复合陈述。你真的需要回去仔细阅读所有东西。你的代码完全错了。理解不是这样的。你使用它们就像一个循环,使用冒号,缩进,但实际上整个过程只在一行括号中。在OP的非理解代码中,
price
大概是一个数字。在代码中,它是一个列表。OP没有发布足够的代码,我无法确定他们在用它做什么,但我想说的是,你的代码很可能没有做到这一点。我并不支持什么是价格,而是理解是如何工作的。这就是我想在答案中向他展示的。列表理解返回一个列表。好吧,你没有解释任何关于理解的东西,所以我认为你没有在这方面展示任何东西。我知道列表的理解会产生一个列表;这就是为什么我在对该代码的具体批评中明确地说了这么多。