1.set

set是一个无序且元素不会重复的集合

#创建

set1={1,2}  or

l = [1,2,3.3]

set2= set(l)

#方法

set2.add() 添加元素

set2.clear()  清楚元素

set2.difference() 两个集合 的差集  set1.difference(set2)  set1不同于set2

对称差集   print set2.symmetric_difference(set1)  {3} 

#上述两种方法 均会生成一个新的结果 而difference_update 和 symmetric_difference_update 会覆盖之前的内容

#移除元素 remove()  discard() 元素不存在的话 remove会报错

 

#pop函数随机移除 并且可以获取那个参数

 

#求交集intersection()

 

#isidsjoint() 判断有无交集  有返回false

set1.isdisjoint(set2)

#union() 并集

 

#update() 批量更新

练习:寻找差异
# 数据库中原有
old_dict = {
    "#1":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 80 },
    "#2":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 80 }
    "#3":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 80 }
}
 
# cmdb 新汇报的数据
new_dict = {
    "#1":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 800 },
    "#3":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 80 }
    "#4":{ 'hostname':c2, 'cpu_count': 2, 'mem_capicity': 80 }
}
 
需要删除:?
需要新建:?
需要更新:? 注意:无需考虑内部元素是否改变,只要原来存在,新汇报也存在,就是需要更新
old_set = set(old_dict.keys())
update_list = list(old_set.intersection(new_dict.keys()))

new_list = []
del_list = []

for i in new_dict.keys():
    if i not in update_list:
        new_list.append(i)

for i in old_dict.keys():
    if i not in update_list:
        del_list.append(i)

print update_list,new_list,del_list

2.collection系列

http://www.cnblogs.com/wupeiqi/articles/4911365.html

3.深浅拷贝

对于 数字 和 字符串 而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址。

对于其它的数据类型:

a.赋值

只是创建一个变量 该变量指向原来的内存地址

b.浅拷贝

import copy
  
n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
  
n3 = copy.copy(n1)

c.深拷贝

深拷贝,在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化)

import copy
  
n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
  
n4 = copy.deepcopy(n1)

 

 

4.内置函数

 

官网:https://docs.python.org/3/library/functions.html

chr()  数字转为ASCII码

ord() 字符转化为数字

enumerate()  for循环前面加数字

format( ) 字符串格式化

 5.参数

 普通参数

默认参数

动态参数

func(*args)  func(**kwargs)  func(*args,**kwargs)

6.文件操作

open('文件路径','操作模式')
打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。

打开文件的模式有:

  • r ,只读模式【默认】
  • w,只写模式【不可读;不存在则创建;存在则清空内容;】
  • x, 只写模式【不可读;不存在则创建,存在则报错】
  • a, 追加模式【可读;   不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件

  • r+, 读写【可读,可写】
  • w+,写读【可读,可写】
  • x+ ,写读【可读,可写】
  • a+, 写读【可读,可写】

 "b"表示以字节的方式操作

  • rb  或 r+b
  • wb 或 w+b
  • xb 或 w+b
  • ab 或 a+b

 注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型

为了避免打开文件后忘记关闭,可以通过管理上下文,即:

with open('log','r') as f:

 

如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。

在Python 2.7 及以后,with又支持同时对多个文件的上下文进行管理,即:

with open('log1') as obj1, open('log2') as obj2:

    pass
 
 
posted on 2018-09-03 10:40  gzcheng  阅读(183)  评论(0编辑  收藏  举报