当前位置:
首页 > Python基础教程 >
-
深浅拷贝、集合set、函数、日志
#-----深浅拷贝----
1 import copy 2 3 a = ["xiaoming",111,[5000,2000]] 4 b = a 5 print("b:%s" % b) #a,b共享同一块内存地址,输出结果b:['xiaoming', 111, [5000, 2000]] 6 7 #浅拷贝只拷贝第一层,第二层指针指向共享[5000,2000] 8 c = a.copy() #浅拷贝 9 c[0] = "xiaowang" 10 c[1] = 222 11 a[2][1] -= 300 12 print("c:%s" % c) #c:['xiaowang', 222, [5000, 1700]] 13 14 d = copy.copy(a) #浅拷贝 15 d[0] = "xiaoyang" 16 d[1] = 333 17 d[2][1] -= 700 18 print("d:%s"% d) #d:['xiaoyang', 333, [5000, 1000]] 19 20 #深拷贝,克隆相同的一份 21 e = copy.deepcopy(a) #深拷贝 22 e[2][1] += 1000 23 print("e:%s" % e) #e:['xiaoming', 111, [5000, 2000]]
#----集合(set)-----
#集合把不同的元素组合在一起
1 a = set("python project") 2 print(a) #{'c', ' ', 'p', 'e', 'h', 'j', 'y', 'o', 't', 'r', 'n'} 3 b = set(["python","linux","java","linux"]) 4 print(b,type(b)) #{'python', 'java', 'linux'} <class 'set'> #set去重 5 print(list(b)) #['java', 'linux', 'python'] #转为列表
#集合对象是一组无序排列可哈西的值,集合成员可以做字典的键
1 li = [[1,2],'a','b'] 2 s = set(li) 3 print(s) #TypeError: unhashable type: 'list' 4 5 a = [1,2,"a","z"] 6 b = set(a) 7 c = {"info":b} 8 print(c) #{'info': {'a', 1, 2, 'z'}}
#集合分类:可变集合、不可变集合 #可变集合(set):可添加和删除元素,集合(set)是非可哈希的,不能用做字典的键,也不能做其他集合的元素。 #不可变集合(frozenset) 不能添加和删除
#创建集合
1 a1 = set(("test","hello")) 2 print(a1) #{'test', 'hello'}
#访问集合
1 #-----in,not in 判断是否在集合中 2 a2 = set(["dream","rise",1,2,4]) 3 print("dream" in a2) #True 4 print("rise" not in a2) #False
#-----for 循环遍历
1 for i in a2: 2 print(i)
#集合中添加、修改、删除元素
1 #-----add 添加 2 a2.add("uu") 3 print(a2) #{1, 2, 'uu', 4, 'dream', 'rise'} 4 5 #-----update 更新 6 a2.update("abs") 7 print(a2) #{1, 2, 4, 'dream', 'a', 'rise', 'uu', 's', 'b'} 8 9 a3 = {1, 2, 4, 'dream', 'rise'} 10 a3.update([12,"hello",1]) 11 print(a3) #{1, 2, 'hello', 4, 12, 'rise', 'dream'} 12 13 #-----删除 14 a3.remove(1) 15 print(a3) #{'dream', 2, 4, 12, 'hello', 'rise'} 16 17 a3.pop() #随机删除 18 print(a3) #{4, 12, 'dream', 'rise', 'hello'} 19 20 a3.clear() #清空集合 21 print(a3) 22 23 del a2 #删除集合 24 print(a2)
#-----集合操作-----
1 #集合等价于不等价 2 print(set("test") == set("tesssssttt")) #等价 #True 3 print(set("test")!= set("tesssssttt")) 4 5 a = set([1,2,3,4,5,6,7]) 6 b = set([3,4,5,6,7,8,9]) 7 8 print(a & b) #交集{3, 4, 5, 6, 7} 9 print(a | b) #并集{1, 2, 3, 4, 5, 6, 7, 8, 9} 10 print(a - b) #差集{1, 2} 11 print(b - a) #差集{8, 9} 12 print(a ^ b) #对称差集{1, 2, 8, 9} 13 14 #-----子集、超集(父集) 15 print(a > b) 16 print(a < b)
#-----函数-----
#-----作用: 1、减少重复代码 2、方便修改 3、保持代码一致性 #-----函数的命名规则: 1、函数名必须以下划线或字母开头,可以包含任意字母、数字或下划线组合。 2、不能使用任何的标点符号 3、函数名是区分大小写 4、函数名不能是保留字 #-----形参和实参 形参:形式参数,不是实际存在,是虚拟变量。 实参:实际参数,电泳函数时传给函数的参数。
#-----logging模块-----
1 import logging 2 3 logger = logging.getLogger() #创建logger对象 4 5 fh = logging.FileHandler('test.log') #创建文件输出对象 6 7 sh = logging.StreamHandler() #创建屏幕输出对象 8 9 formater = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 10 11 fh.setFormatter(formater) 12 sh.setFormatter(formater) 13 14 logger.addHandler(fh) #添加文件输出 15 logger.addHandler(sh) #添加屏幕输出 16 17 logger.setLevel(logging.WARNING) #添加日志级别 18 19 logger.debug('debug message1') 20 logger.info('info message2') 21 logger.warning('warning message3') 22 logger.error('error message4') 23 logger.critical('critical message5')
#-----logging屏幕输出、文件写入日志信息-----
1 2019-09-24 16:48:27,485 - root - WARNING - warning message3 2 2019-09-24 16:48:27,485 - root - ERROR - error message4 3 2019-09-24 16:48:27,486 - root - CRITICAL - critical message5
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式