num2 = [0,100,20]的结果如何得到?

时间:2019-03-19 09:11:05

标签: python list-comprehension

我遇到了有关列表理解的问题。

num1 = [5,10,15]
num2 = [i**2 if i == 10 else i-5 if i < 7 else i+5 for i in num1]

为什么num2num2 = [0,100,20]? 结果如何得到?

2 个答案:

答案 0 :(得分:1)

阅读为:

num2 = [i**2 if i == 10
        else i-5 if i < 7
        else i+5

        for i in num1]
  • 5不等于10,但小于7,因此得出5-5(即0)
  • 10等于10,所以它产生10 ** 2(即100)
  • 15不等于10,不等于7,因此我们使用默认情况,因此得出15 + 5(即20)

答案 1 :(得分:1)

此列表理解完全等同于:

num2 = []
for i in num1:
    if i == 10:
        num2.append(i**2)
    else:
        if i < 7:
            num2.append(i-5)
        else:
            num2.append(i+5)