博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 函数/列表的应用
阅读量:4584 次
发布时间:2019-06-09

本文共 5312 字,大约阅读时间需要 17 分钟。

 

enumerate 函数用于遍历序列中的元素以及它们的下标:

>>> for i,j in enumerate(('a','b','c')):

 print i,j

0 a

1 b
2 c
>>> for i,j in enumerate([1,2,3]):
 print i,j

0 1

1 2
2 3
>>> for i,j in enumerate({'a':1,'b':2}):
 print i,j

0 a

1 b

>>> for i,j in enumerate('abc'):

 print i,j

0 a

1 b
2 c

集合、有序字典、可命名元祖、计数

1 #!/usr/bin/env python3.5 2 # -*-coding:utf8-*- 3 # s1 = set()  # 集合 是一个无序且不重复的元素集合 4 # s1.add("alex") 5 # print("s1") 6 # s1.add("alex") 7 # print("s1") 8 # set()  # 访问速度快,天生解决了重复问题  # 用于爬虫等s2 = 9 # s2 = set(["alex", "eric", "tony"])10 #print(s2)11 # s3 = s2.difference(["alex", "eric"])  # difference 没有改变原来的元数,生成了一个生的元素(集合)12 # print(s3)13 # # {'tony', 'alex', 'eric'}14 # # {'tony'}15 # s4 = s2.difference_update(["alex", "eric"])  # 不生成新的内容,而是改变原有集合的内容 ,删除当前SET中的所有包含在参数集合里的元素16 # print(s2)17 # print(s4)18 # s5 = s2.intersection(["alex", "eric"])  # 新建一个取相同的部分19 # print(s5)20 # s6 = s2.intersection_update(["alex", "eric"])  # 更新原来的取相同部分21 # print(s2)22 23 # b = {"1":"2","2":5}24 # c = {"1":"2","2":6}25 # c.update(b)26 # print(b)27 # print(c)28 29 # import collections30 # obj = collections.Counter(["afad", "adfas"])31 # print(obj)  # 字典32 # obj.update(["afad", "ad2adf"])  # 更新计数33 # print(obj)34 # obj.subtract(["afad", "adfa"])  # 删除计数35 # print(obj)36 # ret = obj.most_common(4)37 # print(ret)38 # for k in obj.elements():39 # elements =>原生值40 #     print(k)  # 循环取出从多到少的各个元素41 # for k, v in obj.items():42 #     print(k, v)  # 取字典键与值43 # import collections44 # # 有序字典45 # dic = collections.OrderedDict()46 # dic['k1'] = 'v1'47 # dic['k2'] = 'v2'48 # dic['k3'] = 'v3'49 # print(dic)50 # dic.popitem()  # 后进先出51 # print(dic)52 # dic.pop('k2')53 # print(dic)54 # help(collections.OrderedDict())55 # 内部用列表来维护有序字典56 # dic = {"k1": []}57 # dic["k1"].append("alex")58 # import collections59 # dic = collections.defaultdict(list)  # 设置字典默认值为空列表60 # dic["k1"].append("alex")61 # print(dic)62 63 # 可命名元祖 意思是 对元祖的元素命名 以后可以直接调名字64 # import collections65 # mytupleclass = collections.namedtuple('mytupleclass', ['x', 'y', 'z'])  # 创建类等同于 defaultdict66 # print(help(mytupleclass))67 # obj = mytupleclass(11, 22, 33)68 # print(obj.x)69 # print(obj.y)70 # print(obj.z)71 # #  主要用于坐标72 73 # 队列 分双向队列与单向队列74 # import collections75 # d = collections.deque()  # 创建双向队列76 # d.append("1")77 # d.append("10")78 # d.append("1")79 # d.append("10")80 # r = d.count("1")81 # # print(r)82 # d.extend(["yy", "uu",   "ii"])83 # d.appendleft("ad")84 # d.appendleft("12")85 # d.extendleft(["adf", "1111", "222"])86 # print(d)87 # #print(help(d))88 89 # 单向队列FIFO90 # 生产者消费者模型91 # import queue92 # q = queue.Queue()  # 创建单向队列93 # # print(help(q))94 # q.put('123')95 # q.put("678")96 # print(q.qsize())  # 获取队列大小97 # print(q.get())  # 获取队列值
View Code

 课上作业:

1 #!/usr/bin/env python3.5 2 # -*-coding:utf8-*- 3 # 数据库中原有 4 old_dict = { 5     "#1":{ 'hostname': "c1", 'cpu_count': 2, 'mem_capicity': 80 }, 6     "#2":{ 'hostname': "c1", 'cpu_count': 2, 'mem_capicity': 80 }, 7     "#3":{ 'hostname': "c1", 'cpu_count': 2, 'mem_capicity': 80 }, 8 } 9 # cmdb 新汇报的数据10 new_dict = {11     "#1":{ 'hostname': "c1", 'cpu_count': 2, 'mem_capicity': 800 },12     "#3":{ 'hostname': "c1", 'cpu_count': 2, 'mem_capicity': 80 },13     "#4":{ 'hostname': "c2", 'cpu_count': 2, 'mem_capicity': 80 },14 }15 #1、原来没有 ->〉新加的插入16 #2、原来有 ->〉更新17 #3、新的无,原来有 =>把原来的删除掉18 #需求19 #要更新的数据20 #要删除的数据21 #要添加的数据22 #交集、差集23 old = set(old_dict.keys())  # 将旧的字典创建集合24 new = set(new_dict.keys())  # 将新的字典创建集合25 # 交集:要更新的数据,即把原来的更新为最新的数据26 # 差集:原来的数据删除,新的数据进行添加27 # delete_set = old.difference(update_set)  # 差集,创建新对象,获取旧的字典里存在的且不在交集里面的,这种方式是通过循环去比较28 # add_set = new.difference(update_set)  # 差集,创建新对象,获取新的字典里存在的且不在交集里面的29 # 交集30 update_set = old.intersection(new)  # 取交集31 delete_set = old.symmetric_difference(update_set)  # 差集,创建新对象,获取旧的字典里存在的且不在交集里面的,对称差集32 add_set = new.symmetric_difference(update_set)  # 差集,创建新对象,获取新的字典里存在的且不在交集里面的,对称差集33 # print(update_set)  # 需要更新的34 # print(delete_set)  # 需要删除的35 # print(add_set)  # 需要增加的36 # 更新37 for i in update_set:38     b = new_dict.get(i)39     c = old_dict.get(i)40     if b == c:41         continue42     else:43         c.update(b)  # 将对应旧字典的数据进行更新44         # print(new_dict)45         # print(old_dict)46         # print(b)47         # print(c)48 # 删除49 for i in delete_set:50     old_dict.pop(i)  # 删除旧的不存在的字典数据51     # print(old_dict)52 # 添加53 for i in add_set:54     old_dict.update(new_dict)  # 将对应旧字典的数据进行更新55 56 print("new_dict:\n %s" % new_dict)57 print("old_dict:\n %s" % old_dict)
View Code

  深浅拷贝:

1 #!/usr/bin/env python3.5 2 # -*-coding:utf8-*- 3 import copy 4 # copy.copy()  # 浅拷贝 只拷贝一层 5 # copy.deepcopy()  # 深拷贝 有多层就拷贝多少份 6 # =  # 赋值 7 # a1 =12324 8 # a3 = copy.copy(a1) 9 # print(a1)10 # print(a3)11 # # 其它,元祖,列表,字典……12 # n1 = {"k1": "12", "k2": "2212", 'k3': ["112", ["adfa", "1231234"]]}13 # n2 = n114 # print(id(n1))15 # print(id(n2))16 # n3 = copy.copy(n1)17 # n3 = copy.deepcopy(n1)18 # print(id(n1))19 # print(id(n3))20 # print(id(n1["k3"]))21 # print(id(n3["k3"]))22 # print(id(n1["k3"][1]))23 # print(id(n3["k3"][1]))24 # print(n1["k3"][1])25 # 监控模板 深浅拷贝26 #27 # dic = {
28 # "cpu": [80],29 # "mem": [80],30 # "disk": [80]31 # }32 # print("brefor:",dic)33 # new_dic = copy.deepcopy(dic)34 # new_dic['cpu'][0] = 5035 # print(new_dic)
View Code

 

转载于:https://www.cnblogs.com/IPYQ/p/5407226.html

你可能感兴趣的文章
WebService
查看>>
AC自动机板子(from. qwer)
查看>>
codevs1958 刺激
查看>>
firefox 访问12306.cn提示有风险但没有添加例外选项
查看>>
HDOJ题目(11.22-12.22)
查看>>
Jenkins-在windows上配置自动化部署(Jenkins+Bonobo.Git.Server)
查看>>
15个来自 CodePen 的酷炫 CSS 动画效果【下篇】
查看>>
那些带给我们强烈视觉冲击的 JavaScript 特效网站
查看>>
Bitmap和Drawable相互转换方法
查看>>
android开发环境以及genymotion虚拟机配合HBuilder测试(自总结)
查看>>
uva 10051 Tower of Cubes(DAG最长路)
查看>>
ios实例开发精品源码文章推荐
查看>>
一些技巧
查看>>
Ultra-QuickSort(数组排序问题)
查看>>
ASP.NET 超时设置
查看>>
Matlab程序 转C++/Opencv基于Mat 不可不知的17个函数
查看>>
#import和importlib的区别
查看>>
bzoj 2054: 疯狂的馒头
查看>>
SQL 公用表达式CTE
查看>>
可恶的Math.random()
查看>>