-
python中continue,break,return三者之间的区别
return 会直接令函数返回,所有该函数体内的代码都不再执行了,所以该函数体内的循环也不可能再继续运行。
break:跳出所在的当前整个循环,到外层代码继续执行。
continue:跳出本次循环,从下一个迭代继续运行循环,内层循环执行完毕,外层代码继续运行。
1 import time 2 while True: 3 time.sleep(0.5) #可简单理解为程序休止一秒 4 print("执行了") 5 continue # 结束本次循环,进行下次循环 6 print("没有执行")#不会执行
1 def say_hello(): 2 print("No Hello!") 3 return #可以加返回值 4 print("Can not say hello") #不会执行 5 6 say_hello()
1 while True: 2 print("执行了") 3 break # 跳出当前循环 4 print("没有执行") #不会执行 5 print("OVER!!!")
-
深浅copy:
1.copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
1 dic1 = { 2 'k1': 'v1', 3 'k2': [11] 4 } 5 dic2 = dic1.copy() 6 print(dic1,dic2) 7 print("********区分线********") 8 dic1['k2'].append(66) 9 print(dic1,dic2)
输出:
可看到,浅拷贝后再次对原数据(dic1)更改时,新的数据也会发生更改(dic2会随之更改)
2. copy.deepcopy() 深拷贝,拷贝对象及其子孙对象
1 dic1 = { 2 'k1': 'v1', 3 'k2': [11,22,33,44] 4 } 5 import copy 6 dic2 = copy.deepcopy(dic1) 7 print(dic1,dic2) 8 dic1['k2'].append(666) 9 print(dic1,dic2)
深copy时,dic1有两层对象,可以理解为父对象和子孙对象;一层是'k1'(key1): 'v1'(value1),'k2'(key2):[11,22,33,44] (value2),而value2又是一层对象(子对象)
输出:
总结:
deepcopy : 即深拷贝,与我们寻常理解的拷贝的意义相同,拷贝原数据,形成新的相同数据,并且两份数据保持独立,没有关联关系。
copy: 即浅拷贝,拷贝原数据,实际上是给原数据贴上新的标签,都是指向同一对象。既然两个数据是指向相同对象,当其中一个数据做出修改,另一个数据也随之改变。
参考:https://www.cnblogs.com/wujiaqing/p/11024382.html
enumerate函数
描述:
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,
同时列出数据和数据下标,一般用在 for 循环当中。
语法:
enumerate(sequence, [start=0])
sequence :一个序列、迭代器或其他支持迭代对象。
start :下标起始位置。
实例:
1 # _*_coding:utf-8_*_ 2 ''' 3 需求a = [1,2,3,4,5,6,7,8,9],把列表中的值加一 方法? 4 5 ''' 6 #方法: 7 8 # 方法1: 9 ''' 10 a = [1,2,3,4,5,6,7,8,9] 11 b = [] 12 for i in a: 13 b.append(i+1) 14 a = b 15 print(a) 16 ''' 17 18 #方法2: 19 ''' 20 a = [1,2,3,4,5,6,7,8,9] 21 b =map(lambda x:x+1,a) 22 for i in b: 23 print(i) 24 25 ''' 26 #方法3: 27 ''' 28 a = [1,2,3,4,5,6,7,8,9] 29 for index,value in enumerate(a): 30 a[index] += 1 31 # print(i,index) 32 print(a) 33 34 ''' 35 #方法4: 36 ''' 37 a = [1,2,3,4,5,6,7,8,9] 38 a = [i+1 for i in a] 39 print(a) 40 41 '''
去掉string(英文状态)的标点符号