精确计算数字而不受浮点的影响
import decimal
a=decimal.Decimal("0.1")
b=decimal.Decimal("0.2")
print(a+b)
结果为0.3
pow(2,3,5)=2**3%5=3
bool()里面定义为false的对象:
1、值为0的数字类型(注意不是字符串)
2、空的序列和集合
布尔运算中用1表示ture,用0表示false
逻辑运算符:
and:左边和右边同时为ture,结果为ture
or:左右里面有一个为ture
not:如果 *** 作数为ture,结果为false。如果 *** 作数为false,结果为ture
短路逻辑:
and和or遵从短路逻辑,短路逻辑的核心思想是,从左往右,只有当第一个 *** 作数的之违法确定逻辑运算的结果时,才对第二个 *** 作数进行求值。
比如3and4结果是4,因为and运算符必须两边都是ture才行,所以还要看右边,而3or4结果是3
对于比较复杂的运算式,有小括号的先运算小括号里的内容。
运算符优先级:
条件表达式:语法:
条件成立时执行的语句 if condition else 条件不成立时执行的语句
拷贝
x=[1,2,3]
y=x[ : ] or y=x.copy( )都是可以的,但是对于嵌套列表,这种方法就不适合了。
比如:
x=[[1,2,3],[4,5,6],[7,8,9]]
y=x.copy( )
x[1][1]=0
print(y)
>>>[[1,2,3],[4,0,6],[7,8,9]]
可见,y是会被干扰的,这里需要导入copy模块
import copy
x=[[1,2,3],[4,5,6],[7,8,9]]
y=copy.copy(x)
x[1][1]=0
print(y)
>>>[[1,2,3],[4,0,6],[7,8,9]]仍然是浅拷贝
那么这里应该用deep copy
即y=copy.deepcopy(x),这样x的改变就不会影响到y了,因为这个时候copy对x的子元素也进行了拷贝
列表推导式(循环语句是逐个循环修改,列表推导式是直接创建信的列表赋值回原变量名)
语法:list=[expression for i in list if condition]
比如:
oho=[1,2,3,4,5]
for i in range(len(oho)):
oho[i]=oho[i]*2
print(oho)
>>>[2,4,6,8,10]
而用列表推导式:
oho=[1,2,3,4,5]
oho=[i*2 for i in oho]
>>>[2,4,6,8,10]
又或者:
x=[1,2,3,4]
x=[i for i in rangr(10)]
>>>[1,2,3,4]
x=[1,2,3,4]
x=[i+1 for i in rangr(10)]
>>>[2.3.4.5]
还是蛮好理解的
它对字符串也是使用的:
y=[x*2 for x in "wc"]
>>>y
["ww","cc"]
对于二维列表(矩阵):
m=[[1,2,3],
[4,5,6],
[7,8,9]]
j2=[row[1] for row in m]
>>>j2
[2,5,8]
取出主对角元:
diag=[m[1][1] for i in range(len(m))
>>>[1,5,9]
condition在列表推导式:
even=[i for i in range(10) if i%2=0)
>>>[0,2,4,6,8]
even=[i+1 for i in range(10) if i%2=0)
>>>[1,3,5,7,9](这说明先执行循环语句再执行条件语句最后执行表达式)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)