• python 函数/列表的应用


    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 collections
    30 # 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 collections
    44 # # 有序字典
    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 collections
    59 # dic = collections.defaultdict(list)  # 设置字典默认值为空列表
    60 # dic["k1"].append("alex")
    61 # print(dic)
    62 
    63 # 可命名元祖 意思是 对元祖的元素命名 以后可以直接调名字
    64 # import collections
    65 # mytupleclass = collections.namedtuple('mytupleclass', ['x', 'y', 'z'])  # 创建类等同于 defaultdict
    66 # 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 collections
    75 # 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 # 单向队列FIFO
    90 # 生产者消费者模型
    91 # import queue
    92 # 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         continue
    42     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:
     %s" % new_dict)
    57 print("old_dict:
     %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 = n1
    14 # 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] = 50
    35 # print(new_dic)
    View Code
  • 相关阅读:
    洛谷P1022计算器的改良(字符串+各种细节坑点考虑)
    hdu5974Math Problem(数学,思维,公式,取巧猜)
    牛客练习赛26A平面(数学公式)
    洛谷P1217回文质数(特判筛选,取巧判断顺序)
    尺取法
    51nod1006最长公共子序列(lcs输出路径)
    51nod1175区间第k大(小)数(主席树模板)
    51nod1174区间中最大的数(rmq模板或线段树 && 线段树标准模板)
    51nod1094和为k连续区间(前缀和+map判断优化)
    矩阵快速幂求递推数列
  • 原文地址:https://www.cnblogs.com/IPYQ/p/5407226.html
Copyright © 2020-2023  润新知