运算符
注意
python 中的没有 i++ ,如果写了会报语法错误。
但是python 中有 --i,++i,+-i,-+i,他们不是实现-1操作的,仅仅是作为判断运算符号,类似数学中的负负得正。
python 中没有 && ,!, || 这3个运算符,在逻辑表达式中写成这3个会抱逻辑错误的。要实现同样的功能,要写成 and,not,or
any all
假设有这样一个题目,判断字符串 "My name is Danny " 中是否包含列表['LiMing', 'Tom', 'Danny'] 中的元素,大部分人第一反应的解法可能是:
for i in names:
if i in str:
print("字符串包含列表中的元素")
那有没有更Pythonic的方法呢?那就可以用Python的内置函数any()来实现
if any(i in str for i in names):
print('字符串包含列表中的元素')
any():用于判断一个可迭代函数的元素是否全为False「即 0、空字符串(''), 空列表([]), False」。如果全为False返回False,否则返回True
print(any([0, 1])) # True
print(any([0])) # False
print(any(['a', 'b', ''])) # True
print(any(['', 0])) # False
print(any(['', 0, True, False])) # True
print(any(['', 0, False])) # False
print(any([])) # 空列表 返回False
print(any(())) # 空元组,返回False
与any() 函数类似的还有一个all() 函数。 经常会混淆。
all():all与any相反,用来判断一个可迭代函数的元素是否含有False「即 0、空字符串(''), 空列表([]), False」,如果有一个元素为False,则返回False,否则返回True。
值得注意的是,空列表和空字典会返回True
print(all([0, 1, 2])) # False (元素0为False, 所以返回False)
print(all([1, 2, 3])) # True
print(all(['a', 'b', ''])) # False (元素包含空字符换,所以返回False)
print(all(['a', 'b', 'c'])) # True
print(all(['a', 'b', False])) # False (元素包含False, 所以返回False)
print(all([])) # 空列表,返回True
print(all(())) # 空元组,返回True
优先级
算数
四舍五入
round() 方法返回浮点数x的四舍五入值。
round( x [, n] )
参数
x -- 数值表达式。
n -- 数值表达式,表示从小数点位数。
返回浮点数x的四舍五入值。
round函数并不总是如上所说的四舍五入。如:
In [14]: round(2.355, 2)
Out[14]: 2.35
注:环境为 python3.5.2
因为该函数对于返回的浮点数并不是按照四舍五入的规则来计算,而会收到计算机表示精度的影响。
当参数n不存在时,round()函数的输出为整数。
当参数n存在时,即使为0,round()函数的输出也会是一个浮点数。
n的值可以是负数,表示在整数位部分四舍五入,但结果仍是浮点数。
除非对精确度没什么要求,否则尽量避开用round()函数。近似计算我们还有其他的选择:
使用math模块中的一些函数,比如math.ceiling(天花板除法)。
python自带整除//,还有div函数。
字符串格式化可以做截断使用,例如 "%.2f" % value。
对浮点数精度要求如果很高的话,请用decimal模块。
除法带余数
divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。
divmod(a, b)
参数
a: 数字
b: 数字