分支循环
and .. or (历史)
# 如果a < b成立,那么结果为a,否则结果是b 3 a = 4 b = and a or b) c = (a < b 3 # 另外一种写法 3 a = 4 b = 0 c = if a < b else b c = a c3 |
if 条件语句
# 条件语句 必须是一个可以用bool值判断的 1 a = if a == 1: 'a确实是等于1') print( a确实是等于1 # 输入结果 if a != 1: 'a确实不等于1') print( # 没有输入结果 if a==1: print('a==1') else: print('a!=1') #屏幕显示-------------------------------- if a==1: 'a==1') print(else: 'a!=1') print( a==1 #---------------------------------------- if a == 1: print('a == 1') elif a == 2: print('a == 2') elif a == 3: print('a == 3') else: print('a不等于1 2 3') # 输出结果:a == 1 # elif 用来细化条件判断,else后不加条件语句 |
while 循环语句
while 1: print('欢迎访问dbase.cc') print('希望您能有所收获') # 只要条件是真值,执行代码会反复执行,上面这就是条死循环,结束用ctrl+c summylist = 0 mylist = [1,2,3,4] while mylist: summylist += mylist[0] mylist = mylist[1:] summylist10 # 说明 sum += mylist[0] # 求和 mylist = mylist[1:] # 切片并重新赋值 # 调测加print验证 summylist = 0 mylist = [1,2,3,4] while mylist: print(mylist) summylist += mylist[0] mylist = mylist[1:] # 输出结果 [1, 2, 3, 4] [2, 3, 4] [3, 4] [4] # while ... else # 如果循环正常结束,那么就会执行else里的语句 mylist = [1,2,3,4] while mylist: print(mylist) mylist = mylist[1:] else: print('循环正常结束了') # 输出结果 [1, 2, 3, 4] [2, 3, 4] [3, 4] [4] 循环正常结束了 |
for 循环语句
# for循环主要用来访问序列和可迭代的数据对象,序列可以是列表、字符串、元组 mystr = 'abc' for var in mystr: print(var) # 输出以下结果 a b c # 说明 ## var是变更名,从序列mystr中一次次取值 dir(str) for var in mystr: var = var.upper() print(var) # 输出以下结果 A B C mylist = [1,2,3,4] for i in mylist: print(i) # 输出以下结果 1 2 3 4 # for ... else # 如果循环正常结束,那么就会执行else里的语句 mylist = [1,2,3,4] for i in mylist: print(i) else: print('循环正常结束') # 输出以下结果 1 2 3 4 循环正常结束 |
break/continue
# break语句用来终止循环语句,如果是用在嵌套循环中,break语句将停止执行最深层次的循环,并开始执行下一行代码 mylist = [1,2,3,4] for var in mylist: if var == 3: break print(var) else: print('循环正常结束') # 输出以下结果 1 2 # continue语句跳出本次循环,跳过这次循环剩下的语句,进行下一轮循环 mylist = [1,2,3,4] for var in mylist: if var == 3: continue print(var) else: print('循环正常结束') # 输出以下结果 1 2 4 循环正常结束 mylist = [1,2,3,4] for var in mylist: for var1 in mylist: if var1 == 3: break print(var1) print('外层循环的var是:',var) # 输出以下结果 1 2 外层循环的var是: 1 1 2 外层循环的var是: 2 1 2 外层循环的var是: 3 1 2 外层循环的var是: 4 mylist = [1,2,3] mylist1 = ['a','b','c'] for var in mylist: print('---------------------') print('外层循环打印:',var) for var1 in mylist1: print('内层循环打印:',var1) # 输出以下结果 --------------------- 外层循环打印: 1 内层循环打印: a 内层循环打印: b 内层循环打印: c --------------------- 外层循环打印: 2 内层循环打印: a 内层循环打印: b 内层循环打印: c --------------------- 外层循环打印: 3 内层循环打印: a 内层循环打印: b 内层循环打印: c # 首先进行外层循环,然后向下会执行到内层循环,内层循环执行完之后,才能继续进行接下来的外层循环 |
深浅拷贝
深拷贝和浅拷贝: python中一切皆对象,像数字,字符串,元祖,如果在内存中存储了这些元素,那么这块内存中的值是不可以被修改的,但是还存在一些可变对象,比如列表和字典,他们所占有的内存空间是可以修改的,有因为python中使用的是引用计数去节省内存。
引用
mylist[1, 2, 3] mylist1 = mylist id(mylist)140636455243336 id(mylist1)140636455243336 mylist[1, 2, 3] mylist1[1, 2, 3] 0] = 'a' mylist[ mylist['a', 2, 3] mylist1['a', 2, 3] |
拷贝
del mylist1 mylist1 = mylist[:] mylist['a', 2, 3] mylist1['a', 2, 3] 0] = 1 mylist[ mylist[1, 2, 3] mylist1['a', 2, 3] id(mylist)140636455243336 id(mylist1)140636455268616 # 切片拷贝,内存地址变化 - 这是浅拷贝 |
浅拷贝
1,2,3,['a','b']] mylist = [del mylist1 mylist1 = mylist[:]-1][0] = 1 mylist[ mylist[1, 2, 3, [1, 'b']] mylist1[1, 2, 3, [1, 'b']] # 当使用切片操作拷贝的时候,虽然可以修改外层列表,不影响其他列表,但是内层子列表被修改的时候,却又受到了影响 del mylist del mylist1 import copy 1,2,3,[1,2]] mylist = [ mylist1 = copy.copy(mylist)-1][0] = 'a' mylist[ mylist[1, 2, 3, ['a', 2]] mylist1[1, 2, 3, ['a', 2]] 0] = 'a' mylist[ mylist['a', 2, 3, ['a', 2]] mylist1[1, 2, 3, ['a', 2]] # 浅拷贝 不会拷贝数据中的子对象 ## 浅拷贝的方式1: 切片 mylist1 = mylist[:] ## 浅拷贝的方式2: copy.copy() import copy mylist1 = copy.copy(mylist) |
深拷贝
del mylist del mylist1 1,2,3,[1,2]] mylist = [import copy mylist1 = copy.deepcopy(mylist) mylist[1, 2, 3, [1, 2]] mylist1[1, 2, 3, [1, 2]] 0] = 'a' mylist[ mylist['a', 2, 3, [1, 2]] mylist1[1, 2, 3, [1, 2]] -1][0] = 'a' mylist[ mylist['a', 2, 3, ['a', 2]] mylist1[1, 2, 3, [1, 2]] # 深拷贝 会拷贝数据中的子对象 ## 深拷贝的方式 import copy copy.deepcopy() |
解决docker容器中文打印乱码问题
'中文') print( File "<stdin>", line 0 ^ SyntaxError: 'ascii' codec can’t decode byte 0xe4 in position 7: ordinal not in range(128) # 查看locale设置 locale #------------------------------------ LANG= LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" LC_ALL= #------------------------------------ # 查看容器所有语言环境(ubuntu和Centos不一样,下面只列出ubuntu的) locale -a #------------------------------------ C C.UTF-8 POSIX #------------------------------------ # C.UTF-8可以支持中文,只需要把容器编码设置为C.UTF-8即可(centos是en_US.utf8) # 改变locale设置 ## Centos export LANG=en_US.utf8 ## Ubuntu export LANG=C.UTF-8 # 执行打印 '中文') print(中文 # 彻底解决在docker镜像中添加 |