Python入门教程 条件运算符、递归和推导

条件运算符 <表达式1>?<表达式2>:<表达式3> 三元表达式

value_when_true if condition else value_when_false

"A" if True else "B"
>>>if True
        A
   else
        B

"A" if False else "B"
>>>if False
        B
   else A

and---or(and真返回最后一个值 假返回第一个值     or真返回第一个 ‘’和None为假)

"a" and "b"

>>>"b"

False and "b"
>>>False

"a" and False "b"

False

and中 都真则返回最后一个值 如果假返回第一个假的值
'a' or 'b'
>>>"a"

False or "b"
>>>"b"

"a"or False or "b"
>>>"a"

##真返回第一个值的 假返回最后个假的值  那么都假呢?返回假

>>> False or 0
0
>>> False or 1
1
>>> False or 0 or 1
1

和and相反:第一个真值 最后一个假值
and 最后个真值 第一个假值

“”和None算 False

递归

1:必定存在可使递归调用终止的条件,否则导致出现无限递归(防止无限递归)

2:在每一次调用自己时,在某种意义上应该更接近于解

阶乘的数学定义是:n!= n*(n-1)!
例如:3!=3*2*1=6

def factorial(n):
    if n == 1:
        return 1
    else:
        return n*factorial(n-1)
def factorial(n):
    return 1 if n == 1 else n*factorial(n-1)
##<1>if 条件 else<2>

递归调用默认3000 3000次

推导

列表解析(更快)
[i*i for i in [1,2,3,4]]
>>>[1,4,9,16]

#加条件

[i*i for i in [1,2,3,4] if i%2]
>>>[1,9]

##if 1%2 为真 则i*i

集合解析和字典解析
{i*i for in {1,2,3,4,1}}
>>>{1,4,9,16}##集合重复元素会去掉
{k:v*v for k,v in [("a",1),("b",2)]}
>>>{"a":1,"b":4}

http://python-3-patterns-idioms

 test.readthedocs.io/en/latest/Comprehensions.html

猜你喜欢

转载自blog.csdn.net/weixin_42199275/article/details/81502857
今日推荐