首页 > 技术文章 > python大杂铺

Demo-simple 2019-06-02 17:42 原文

 

  •  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)
View Code

 

  输出:

  可看到,浅拷贝后再次对原数据(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)
View Code

深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 '''
View Code

 

去掉string(英文状态)的标点符号

 

 

View Code

 

推荐阅读