Python笔记

Python笔记,第1张

Python笔记

精确计算数字而不受浮点的影响
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](这说明先执行循环语句再执行条件语句最后执行表达式)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5580053.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存