布尔值有两种:True 和 false ,1为真,非真即假,在python中,‘=’为赋值,==表示判断恒等,!=表示判断不相等;字符串之间的比较根据ASCII码判断,且按顺序比较,从第一位开始比较— a=97 , A=65
# 数值类型判断
print(100>101) # 结果为假
print(100 == 100) # 结果为真
print(100!= 101) # 结果为真
# 字符串判断
print('a' == 'A') # 结果为假
in 和 not in
list1 = [100, 200 ,300, [400, 500]] print(100 in list1) # 结果为真 print(400 in list1) # 结果为假,因为400 属于子列表,不属于外层的列表 print(100 not in list1) # 结果为假,非真即假,非假即真
and 和 or
and特性:一假为假,全真为真
or特性: 一真为真,全假为假
print(1>2 or 2>1) # 结果为真 print(3>2 and 1>3) # 结果为假 print(3>2 and 5>2 or 1>3) # 结果为真 print(1>2 and ......) #程序执行时,只要它能判断式子为假,那么后面的式子就不再执行,直接返回False print(2>1 or ......) #程序执行时,只要它能判断式子为真,那么后面的式子就不再执行,直接返回True
not and or 组合条件运用 ,优先级:一般情况下,not > and > or,但是括号可以改变优先级
print(2>1 and 1>2 and not True or 2>1) # 结果为真 # 先判断 not True 为假, 再判断2>1 and 1>2 为假,再使用or 2>1 为真,所以结果为真条件判断语句
python语句结构有三大类:顺序结构,分支结构,循环结构
顺序结构所有的顺序结构都需要顶格写,python对于缩进有严格的要求,不需要缩进的地方不能缩进,需要缩紧的地方必须缩进,具体缩进多少无严格要求。默认一般是四个空格
print('hello')
print('python')
分支结构
为了限定用户正规操作,也为了更好的控制程序的逻辑,必须在适当时引入条件结构。Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块
单分支结构:单分支结构逻辑是最简单的分支结构,语法格式如下:
if True: # 布尔表达式
print('条件代码')
双分支结构:双分支结构是在原来的单分支结构基础上,除条件为真时做一些事情外,条件为假时还需要继续去做一些事情的分支结构逻辑,语法格式如下:
if 条件表达式:
代码块1
else :
代码块2
多分支结构:多分支结构和双分支结构都是对一个条件作出的两种判断,若存在多个条件时,就需要多分支结构。语法格式如下:
if 条件表达式1 :
代码块1
elif 条件表达式2 :
代码块2
else :
代码块3
循环结构
Python 循环结构,程序的循环结构逻辑,循环就是按照一定的条件重复的去做一件事情,当条件不成立时就结束循环的内容
1、while循环:while 关键词后面紧跟的条件表达式决定了循环是够进行下去
while 条件表达式 :
代码段(包含改变计数器值的语句)
2、while…else…循环:语法结构如下
while 条件表达式 :
代码块1
改变计数器的值
else :
代码块2
3、for 循环:while循环和for循环用于处理不同的问题,while应用在不知道循环次数的情况下,for应用在确定循环次数的情况下;语法如下:
for 临时变量 in 可迭代对象 :
循环体
4、for…else…:语法如下
for 临时变量 in 可迭代对象 :
循环体
else :
代码块2
5、循环结束语句:
Python的循环逻辑控制是依靠for和while这两种语句来实现的。但是,有时不需要把循环执行完,条件合适时需要直接退出循环,这时可以使用break语句。还有一种需求,不需要退出整个循环,而是退出本次循环,可以使用continue语句。这两个语句的区别如下:
1、break用于完全结束一个循环,跳出循环体之行循环后面的语句。
2、continue只是终止本次循环,接着还之行后面的循环。
浅拷贝和深拷贝只涉及到列表和字段,只针对于可变对象
list1 = [100, 200 ,300] list2 = list1 # 将list1 赋值给list2 ,对于列表而言赋值相当于起了一个别名,两个变量指向的是同一个对象 list2[1] = 2**5 # 改变list2 索引1的值 print(list2) print(list1) # 结果list1 和list2 输出结果相同
若想只改变list2,而不改变list1的话,这边需要引入一个浅拷贝
import copy list1 = [100, 200 ,300] list2_new = copy.copy(list1) # 浅拷贝,生成的是一个新的对象 list1_new[1] = 2**8 print(list1) print(list1_new) # 结果为 list1_new 的值变化,list1的值没有变化
同样可以通过切片来进行复制,相当于浅拷贝
list1 = [100, 200, 300] list2 = list1[:] # 通过切片来赋值,也是生成了一个新的对象--切片等价于浅拷贝 list2[1] = 300 print(list2,list1)
但是若改变列表中的子列表,而不影响原来的列表的值,使用浅拷贝就不能实现,就需要引入深拷贝
import copy list1 = [100, 200 ,300, [400, 500]] list1_new = copy.deepcopy(list1) # 深拷贝,列表和自列表都是生存的新对象 list1_new[-1][1] = 2**8 print(list1) print(list1_new)



