python大杂铺

时间:2024-05-01 23:57:49

 

  • python中continue,break,return三者之间的区别

    return 会直接令函数返回,所有该函数体内的代码都不再执行了,所以该函数体内的循环也不可能再继续运行。

    break:跳出所在的当前整个循环,到外层代码继续执行。

    continue:跳出本次循环,从下一个迭代继续运行循环,内层循环执行完毕,外层代码继续运行。

    

 import time
while True:
time.sleep(0.5) #可简单理解为程序休止一秒
print("执行了")
continue # 结束本次循环,进行下次循环
print("没有执行")#不会执行

continue

 def say_hello():
print("No Hello!")
return #可以加返回值
print("Can not say hello") #不会执行 say_hello()

return

 while True:
print("执行了")
break # 跳出当前循环
print("没有执行") #不会执行
print("OVER!!!")

break

  • 深浅copy:

    1.copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。

  

  
 dic1 = {
'k1': 'v1',
'k2': [11]
}
dic2 = dic1.copy()
print(dic1,dic2)
print("********区分线********")
dic1['k2'].append(66)
print(dic1,dic2)

  输出:python大杂铺

  可看到,浅拷贝后再次对原数据(dic1)更改时,新的数据也会发生更改(dic2会随之更改)

   2. copy.deepcopy() 深拷贝,拷贝对象及其子孙对象

 dic1 = {
'k1': 'v1',
'k2': [11,22,33,44]
}
import copy
dic2 = copy.deepcopy(dic1)
print(dic1,dic2)
dic1['k2'].append(666)
print(dic1,dic2)

深copy时,dic1有两层对象,可以理解为父对象和子孙对象;一层是'k1'(key1): 'v1'(value1),'k2'(key2):[11,22,33,44] (value2),而value2又是一层对象(子对象)

输出:python大杂铺

  总结:

  deepcopy : 即深拷贝,与我们寻常理解的拷贝的意义相同,拷贝原数据,形成新的相同数据,并且两份数据保持独立,没有关联关系。

  copy: 即浅拷贝,拷贝原数据,实际上是给原数据贴上新的标签,都是指向同一对象。既然两个数据是指向相同对象,当其中一个数据做出修改,另一个数据也随之改变。

参考:https://www.cnblogs.com/wujiaqing/p/11024382.html

enumerate函数

描述:
  enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,
  同时列出数据和数据下标,一般用在 for 循环当中。
语法:
  enumerate(sequence, [start=0])
  sequence :一个序列、迭代器或其他支持迭代对象。
  start :下标起始位置。
实例:

 # _*_coding:utf-8_*_
'''
需求a = [1,2,3,4,5,6,7,8,9],把列表中的值加一 方法? '''
#方法: # 方法1:
'''
a = [1,2,3,4,5,6,7,8,9]
b = []
for i in a:
b.append(i+1)
a = b
print(a)
''' #方法2:
'''
a = [1,2,3,4,5,6,7,8,9]
b =map(lambda x:x+1,a)
for i in b:
print(i) '''
#方法3:
'''
a = [1,2,3,4,5,6,7,8,9]
for index,value in enumerate(a):
a[index] += 1
# print(i,index)
print(a) '''
#方法4:
'''
a = [1,2,3,4,5,6,7,8,9]
a = [i+1 for i in a]
print(a) '''

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

python大杂铺python大杂铺