как получается результат num2 = [0,100,20]? - PullRequest
0 голосов
/ 19 марта 2019

Я встречал вопрос о понимании списка.

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

почему num2 это num2 = [0,100,20]? Как получается результат?

Ответы [ 2 ]

1 голос
/ 19 марта 2019

Это понимание списка точно эквивалентно:

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)
1 голос
/ 19 марта 2019

Прочитайте как:

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)
...