条件运算符 <表达式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