python中continue,break,return三者之间的区别
return 会直接令函数返回,所有该函数体内的代码都不再执行了,所以该函数体内的循环也不可能再继续运行。
break:跳出所在的当前整个循环,到外层代码继续执行。
continue:跳出本次循环,从下一个迭代继续运行循环,内层循环执行完毕,外层代码继续运行。
1 import time
2 while True:
3 time.sleep(0.5) #可简单理解为程序休止一秒
4 print("执行了")
5 continue # 结束本次循环,进行下次循环
6 print("没有执行")#不会执行
continue
1 def say_hello():
2 print("No Hello!")
3 return #可以加返回值
4 print("Can not say hello") #不会执行
5
6 say_hello()
return
1 while True:
2 print("执行了")
3 break # 跳出当前循环
4 print("没有执行") #不会执行
5 print("OVER!!!")
break
深浅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: 即浅拷贝,拷贝原数据,实际上是给原数据贴上新的标签,都是指向同一对象。既然两个数据是指向相同对象,当其中一个数据做出修改,另一个数据也随之改变。
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(英文状态)的标点符号