python的学习之路(三)
一、set集合
#!/usr/bin/env python
# *_*coding:utf-8 *_*
# Author: harson 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(old_dict.keys())
new = set(new_dict.keys()) update_set = old.intersection(new) del_set = old.symmetric_difference(update_set)
insert_set = new.symmetric_difference(update_set) print(update_set)
print(del_set)
print(insert_set)
二、collection
#!/usr/bin/env python
# *_*coding:utf-8 *_*
# Author: harson import collections obj = collections.Counter('dsafd45f45d6s4t6we4g56ds4f5')
print(obj)
obj1 = obj.elements()
print(obj1)
for k in obj.elements():
print(k)
for k,v in obj.items():
print(k,v) #有序字典
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k2'] = 'v2'
dic['k3'] = 'v3'
print(dic)
dic.move_to_end('k1')
print(dic)
dic.popitem()
print(dic)
dic.pop('k2')
print(dic)
dic.setdefault('k4','v4')
dic.update({'k1':'v111','k5':'v5'})
print(dic) #默认字典
ddic = collections.defaultdict(list)
ddic['k1'].append('v123')
print(ddic)
#可命名元组
my_tuple = collections.namedtuple('my_tuple',['x','y','z'])
t = my_tuple(11,22,33)
d=t.x
print(d) #双向队列
q = collections.deque()
q.append(11)
q.append(22)
q.appendleft(11)
c =q.count(11)
print(q)
print(c) #单项队列
que = queue.Queue()
que.put(11)
que.put(22)
g = que.get()
print(g)
import copy #字符串、数字的深拷贝、浅拷贝、赋值时内存地址相同
s = 11
str = 'zifuchuan'
s1 = s
str1 = copy.copy(str)
str2 = copy.deepcopy(str)
print(id(s))
print(id(s1))
print(id(str))
print(id(str1))
print(id(str2)) #其他、列表、字典、元组赋值时内存地址相同,浅拷贝及深拷贝内存地址不同,但是最底层元素内存地址相同 k = {'k1':'111','k1':'harson','k3':['lee','kobe']}
k1=k
print(id(k))
print(id(k1))
k2 = copy.copy(k)
k3 = copy.deepcopy(k)
print(id(k2))
print(id(k3)) #深拷贝应用 dic = {'cpu':[80,],'mem':[80,],'disk':[80,]}
print('before',dic)
new_dic = copy.deepcopy(dic)
new = copy.copy(dic) new_dic['cpu'][0] = 50
new['cpu'][0] = 40 print(dic)
print(new_dic)
print(new) 二、函数
#无参数def mail():
n = 11
n += 1
print(n) mail()
d = mail()
d
e = mail
e()
#一个参数
def a(a):
print(a) a(2) #默认参数
def show(a=22,b=33):
print(a,b) show()
show(55,66) #指定参数
def show1(a,b):
print(a,b) show1(b=3,a=4) #动态参数、参数前加一个*代表把传入的参数转化为一个元组,参数前加两个*代表把传入的参数转化为字典
#两个带*参数也可混合使用,但是一个*的参数必须在前,**的在后
def test(*args):
print(args,type(args)) def test1(**args):
print(args,type(args)) def test2(*args,**kwargs):
print(args, type(args))
print(kwargs,type(kwargs)) test(11,22)
test1(n=33)
test2(n=55,n1=66) #要想把l传入到args里需要前面加一个*,把k传入到kwargs里需要在参数前加两个*,否则则会把l,k当成两个参数转入到args中
l = [11,22,33,44]
k = {'n':33,'n1':'harson'} test2(l,k)
test2(*l,**k)
#内置函数
#all序列的元素是否都为真
r = all([11,''])
print(r) #r1序列的元素有一个为真则为真
r1 = any([22,''])
print(r1) #bin转化为2进制
print(bin(10)) #bytearray转换为字节数组
print(bytearray(10)) #bytes转换为字节码
print(bytes(10)) #callable函数是否可被调用
fun = lambda a: a+1
l = []
c = callable(fun)
c1 = callable(l)
print(c)
print(c1) #compile用于编译代码 #enumerate用于循环时给字段加下标
l = ['alex','harson','lee']
for i in l : print(i) for i,item in enumerate(l,1) :print(i,item) #eval把字符串转化成代码执行
str = '5*6'
e = eval(str)
print(e) #map将序列中的每个元素进行操作,得到新的序列,元素个数不变
li = [11,22,33,44]
new_li = map(lambda x : x*6,li)
n = list(new_li)
print(n) #filter将序列进行过滤得到新的序列
def fun(x) :
if x>22:
return True
else:
return False
_li = filter(fun,li)
_n = list(_li)
print(_n) s1 = '456456asd'
s2 = s1.format()
print(s2) # chr将数字转化为字符,ord将字符转化为数字
print(chr(99))
print(ord('A'))
#lambda表达式,用于简单函数的表示方式
#a表示传入的形式参数,a+1表示函数内容及return的返回值
fun = lambda a : a+1
ret = fun(5)
print(ret) str ='%s is good' % ('alex')
print(str)
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr def mail(user):
ret = True
try:
msg = MIMEText('hello!', 'plain', 'utf-8')
msg['From'] = formataddr(["harson", 'lihasheng@126.com'])
msg['To'] = formataddr(["lee", '83968660@qq.com']) msg['Subject'] = "主题" server = smtplib.SMTP("smtp.126.com", 25)
server.login("lihasheng@126.com", "lhs529464")
server.sendmail('lihasheng@126.com', [user, ], msg.as_string())
server.quit()
except Exception:
ret = False
return ret ret = mail('83968660@qq.com')
if ret :
print('发送成功')
else:
print('发送失败')
# f = open('test.log','w')
# f.write('hello world')
# f.close() f = open('test.log','r',encoding='utf-8')
ret = f.read(1)
f.close()
print(ret) #f.tell查看当前指针位置
#f.read指定读取字符
#f.seek指定当前指针位置
f = open('test.log','r')
print(f.tell())
f.read(1)
f.seek(1)
print(f.tell())
f.close()
python的学习之路(三)的更多相关文章
- 学习之路三十九:新手学习 - Windows API
来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...
- Python入门学习之路,怎么 “开心,高效,踏实” 地把Python学好?兴趣,兴趣,兴趣!
Python入门学习之路,怎么 “开心,高效,踏实” 地把Python学好?兴趣,兴趣,兴趣!找到你自己感兴趣的点进行切入,并找到兴趣点进行自我驱动是最好的学习方式! 推荐两本书,一本作为 ...
- Redis——学习之路三(初识redis config配置)
我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息. ...
- Python小白学习之路(三)—【数字功能】【字符串功能】
数字(int)常见功能 在网络课上,老师把这些功能称为神奇的魔法,想要揭开魔法神奇的面纱,想要看看有什么招数,在Pycharm里敲击三个字母(int),按住Ctrl,将鼠标点在int上,这时鼠标会变成 ...
- Python小白学习之路(十八)—【内置函数三】
一.对象操作 help() 功能:返回目标对象的帮助信息 举例: print(help(input)) #执行结果 Help on built-in function input in module ...
- python学习之路 三:字符编码
本节重点 彻底掌握字符编码之前的转换关系 掌握 python2 vs python3 上编码的区别 掌握 python2 和python3 上bytes,str 的区别 补充知识点:三元运算 三元运 ...
- python学习之路三(文件读写)
# -*- coding: utf-8 -* ''' Created on 2013-7-29 @author: lixingle ''' import os #引入操作文件和目录的函数包 impor ...
- Python基础学习参考(三):内置函数
一:内置函数 在第一篇文章中,我们简单的认识了一下print()函数和input()函数,也就是输入和输出,这些函数我们可以直接的调用,不要自己定义或者引入什么,对吧?想这样的函数就叫做内置函数.这里 ...
- python入门学习笔记(三)
10.函数 求绝对值的函数 abs(x) 也可以在交互式命令行通过 help(abs) 查看abs函数的帮助信息.调用 abs 函数:>>> abs(100)100>>& ...
随机推荐
- bzoj3550: [ONTAK2010]Vacation(单纯形法+线性规划)
传送门 直接暴力把线性规划矩阵给打出来然后单纯形求解就行了 简单来说就是每个数记一个\(d_i\)表示选或不选,那么就是最大化\(\sum d_ic_i\),并满足一堆限制条件 然后不要忘记限制每个数 ...
- [POI2008]BLO-Blockade 【无向图tarjan/鸽点】By cellur925
题目传送门 lyd无向图tarjan的例题. 一句话题意(不得不佩服lyd老师的高度概括能力):在一张无向连通图上,求出每个点被破坏(去掉与这个点相关的所有边,不去掉这个点)后,无向图中使i,j不连通 ...
- SolrCloud索引富文本数据
solrconfig配置文件: schema配置文件: 执行目录: /opt/solr-5.5.4/server/scripts/cloud-scripts -- 下载配置文件 ./zkcli.sh ...
- java实现九九乘法表
public class Demo { public static void main(String[] args) { for (int i = 1; i < 10; i++) { ...
- Mac OS X:在标题栏上显示目录完整路径
众所周知mac的finder是不带路径显示的,你进入某个文件夹只会显示当前文件夹的名字而已.虽然你可以在finder的菜单栏中点“显示”-“显示路径栏”把路径栏调出来,但是这样只会不必要的增加find ...
- hadoop-2.4.1集群搭建及zookeeper管理
准备 1.1修改主机名,设置IP与主机名的映射 [root@xuegod74 ~]# vim /etc/hosts 192.168.1.73 xuegod73 192.168.1.74 xuegod7 ...
- outlook 通讯录分类--2017年1月16日--对联系人分类管理
outlook功能多,复杂,导致打开界面就晕,通讯录分类 问:在Outlook 中,随着联系人数量的增多,亲朋好友.同事.客户的信息混杂在一起,每次发邮件都要用很长时间才能从联系人列表中找到需要的人. ...
- Java编程思想总结笔记Chapter 5
初始化和清理是涉及安全的两个问题.本章简单的介绍“垃圾回收器”及初始化知识. 第五章 初始化与清理 目录:5.1 用构造器确保初始化5.2 方法重载5.3 默认构造器5.4 this关键字5.5 清 ...
- 【数据分析 R语言实战】学习笔记 第四章 数据的图形描述
4.1 R绘图概述 以下两个函数,可以分别展示二维,三维图形的示例: >demo(graphics) >demo(persp) R提供了多种绘图相关的命令,可分成三类: 高级绘图命令:在图 ...
- php查询快递信息
$code = 'shunfeng'; $invoice = '952255884068'; $test = getExpressDelivery($code,$invoice); function ...