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>>& ...
随机推荐
- Unix\Linux | 总结笔记 | vi编辑器
0 目录 新建文件夹 常用的命令 三种模式及切换 vi编辑器的启动选项及后续相关操作 其他--替换文本 其他--写入另一个文件 1 新建文件夹 vi [目录名/文件 ...
- 《windows核心编程系列》二十二谈谈修改导入段拦截API。
一个模块的导入段包含一组DLL.为了让模块能够运行,这些DLL是必须的.导入段还包含一个符号表.它列出了该模块从各DLL中导入的符号.当模块调用这些导入符号的时候,系统实际上会调用转换函数,获得导入函 ...
- 《windows核心编程系列》十九谈谈使用远程线程来注入DLL。
windows内的各个进程有各自的地址空间.它们相互独立互不干扰保证了系统的安全性.但是windows也为调试器或是其他工具设计了一些函数,这些函数可以让一个进程对另一个进程进行操作.虽然他们是为调试 ...
- BP神经网络算法改进
周志华机器学习BP改进 试设计一个算法,能通过动态调整学习率显著提升收敛速度,编程实现该算法,并选择两个UCI数据集与标准的BP算法进行实验比较. 1.方法设计 传统的BP算法改进主要有两类: - 启 ...
- Retinex系列之Frankle-McCann Retinex 分类: Matlab 图像处理 2014-12-01 21:52 538人阅读 评论(2) 收藏
一.Frankle-McCann Retinex Frankle-McCann算法选择一条螺旋结构的路径用于像素间的比较.如下图,算法沿着螺旋路径选取用于比较 像素点,这种路径选择包含了整个图像的全局 ...
- Spring @Resource、@Autowired、@Qualifier区别
@Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入: @Autowired默认是按照类型装配注入的,如果想按照名称来转配注入,则需要结合@Qualif ...
- java数据结构和算法05(二叉树)
对于树这个数据结构,第一次看到这个树肯定是一脸蒙逼,玛德,树?种树的那个树么?哈哈哈,当然不是,前面我们说过数组添加.删除数据很慢,查询数据很快:而链表添加.删除数据很快,但是查找数据很慢,我们就想啊 ...
- 2017广东工业大学程序设计竞赛决赛 H tmk买礼物
题意: Description 今天是校赛的日子,为了庆祝这么喜庆的日子,TMK打算买些礼物给女票LSH庆祝一下. TMK进入了雪梨超市,然后刚踏入的一瞬间,店主就对TMK说:“恭喜你成为了本店第21 ...
- [BZOJ1061][Noi2008]志愿者招募 线性规划+费用流
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1061 根据题意列方程,然后用网络流解线性规划. 题解直接贴ByVoid的吧,太神了:htt ...
- CCF|游戏|Java
import java.util.Scanner; public class tyt { public static void main(String[] args) { Scanner in = n ...