Python【基础第三篇】
set集合
s1=set()
集合特点:
- 访问速度快
- 没有重复项
collections系列(数据类型容器模块)
一、计数器(Counter)
Counter是对字典类型的补充,用于追踪值的出现次数。
import collections 导入模块
例:
import collections
obj=collections.Counter("aaafffefwifewfewf")
print(obj)
Counter({'f': 7, 'a': 3, 'w': 3, 'e': 3, 'i': 1})
二、有序字典(OrderedDict)
orderdDict是对字典类型的补充,他记住了字典元素添加的顺序
例:
import collections
dic=collections.OrderedDict()
dic['k1']='v1'
dic['k2']='v2'
dic['k3']='v3'
print(dic)
输出:OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
三、默认字典(defaultdict)
defaultdict是对字典的类型的补充,它默认给字典的值设置了一个类型
四、可命名元组(namedtuple)
根据nametuple可以创建一个包含tuple所有功能以及其他功能的类型
例:
import collections
MytupleClass=collections.namedtuple('MytupleClass',['x','y','z'])
obj=MytupleClass(11,22,33)
print(obj.x)
print(obj.y)
print(obj.z)
输出:11
22
33
双向队列
一个线程安全的双向队列
例:
import collections
d=collections.deque()
d.append('1')
d.appendleft('0')
d.appendleft('1')
print(d)
r=d.count('1')
print(r)
输出:
deque(['1', '0', '1'])
2
深浅拷贝原理
对于字符串和数字而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址
深拷贝
在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化)
copy.copy()
浅拷贝
在内存中只额外创建第一层数据
copy.deepcopy()
函数
一、背景
函数式编程和面向过程编程的区别:
- 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
- 面向对象:对函数进行分类和封装,让开发“更快更好更强...”
函数式编程最重要的是增强代码的重用性和可读性
二、定义和使用
def 函数名(参数):
...
函数体
...
函数的定义主要有如下要点:
- def:表示函数的关键字
- 函数名:函数的名称,日后根据函数名调用函数
- 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
- 参数:为函数体提供数据
- 返回值:当函数执行完毕后,可以给调用者返回数据。
以上要点中,比较重要有参数和返回值:
1、返回值
函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。
def 发送短信():
发送短信的代码...
if 发送成功:
return True
else:
return False
while True:
# 每次执行发送短信函数,都会将返回值自动赋值给result
# 之后,可以根据result来写日志,或重发等操作
result = 发送短信()
if result == False:
记录日志,短信发送失败...
2、参数
- 无参数
- 有参数
- 普通参数
- 默认参数
- 动态参数
普通参数举例:(argv为函数mail的形参,1和2为mail的)
def mail(argv):
n=123
n+=argv
print(n)
mail(1)
mail(2)
输出:124
125
默认参数举例:(注:默认参数需要放在参数列表最后)
def mail(argv1,argv2=10):
n=123
n+=argv1
n+=argv2
print(n)
mail(1,2)
mail(1)
输出:126
134
指定参数举例:(指定形参的值)
def show(a1,a2):
print(a1,a2)
show(a2=123,a1=999)
输出:999 123
动态参数举例1:(*args会把实参当做1个序列处理,**args会把实参当做1个字典处理)
def show(*args,**args2):
print(args,type(args))
print(args2,type(args2))
show(11,22,33,44,a1='aaa',b1='bbb')
输出:(11, 22, 33, 44) <class 'tuple'>
{'a1': 'aaa', 'b1': 'bbb'} <class 'dict'>
动态参数举例2:(如果让形参接收和实参一样的类型,需对应在实参前加*或**,否则会把实参当做1个元组处理)
def show(*args,**args2):
print(args,type(args))
print(args2,type(args2))
e=[11,22,33,44]
f={'a1':'aaa','b1':'bbb'}
show(e,f)
print("==================")
show(*e,**f)
输出:
([11, 22, 33, 44], {'a1': 'aaa', 'b1': 'bbb'}) <class 'tuple'>
{} <class 'dict'>
==================
(11, 22, 33, 44) <class 'tuple'>
{'a1': 'aaa', 'b1': 'bbb'} <class 'dict'>
lambda表达式
lambda存在意义就是对简单函数的简洁表示
例:
func=lambda a:a+1
ret=func(99)
print(ret)
输出:100
1、创建形式参数a
2、函数内容,a+1,并把结果return
内置函数
open函数
该函数用于文件处理
f=open('test.log','w',encoding='utf-8')
f.write('123456') #将123456写入文件test.log
f.close()
f=open('test.log','r',encoding='utf-8')
print("==========")
print(f.read()) #读取文件test.log
f.close()
f=open('test.log','r',encoding='utf-8')
f.seek(1) #指定当前指针位置
print("==========")
print(f.tell()) #查看当前指针位置
print(f.read(2)) #指定读取字符
print(f.tell()) #查看当前指针位置
f.close()
输出:==========
123456
==========
1
23
3
Python【基础第三篇】的更多相关文章
- Python基础第三篇
一.collections系列 Counter是对字典类型的补充,用于追踪值的出现次数,具备字典的所有功能 + 自己的功能 1.计数器Counter import collections a='aba ...
- python基础-第三篇-函数编程
基本数据类型之set set是无序不允许重复的集合 set创建:s = set() 创建空集合 s = {11,22,33} 转换s = set(可迭代数据) li = [11,22,33,44] ...
- Python 基础语法(三)
Python 基础语法(三) --------------------------------------------接 Python 基础语法(二)------------------------- ...
- NHibernate 映射基础(第三篇) 简单映射、联合主键
NHibernate 映射基础(第三篇) 简单映射.联合主键 NHibernate完全靠配置文件获取其所需的一切信息,其中映射文件,是其获取数据库与C#程序关系的所有信息来源. 一.简单映射 下面先来 ...
- Python基础知识(三)
Python基础知识(三) 一丶整型 #二进制转成十进制的方法 # 128 64 32 16 8 4 2 1 1 1 1 1 1 1 例如数字5 : 101 #十进制转成二进制的方法 递归除取余数,从 ...
- Python基础学习三
Python基础学习三 1.列表与元组 len()函数:可以获取列表的元素个数. append()函数:用于在列表的最后添加元素. sort()函数:用于排序元素 insert()函数:用于在指定位置 ...
- python数据挖掘第三篇-垃圾短信文本分类
数据挖掘第三篇-文本分类 文本分类总体上包括8个步骤.数据探索分析->数据抽取->文本预处理->分词->去除停用词->文本向量化表示->分类器->模型评估.重 ...
- Python基础【第一篇】
一.Python简介 Python的创始人(Guido von Rossum 荷兰人),Guido希望有一种语言既能像C一样方便地调用操作系统的功能接口,也能像shell脚本一样,轻松地实现编程,A ...
- Python 基础学习 总结篇
Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...
- python基础-第六篇-6.2模块
python之强大,就是因为它其提供的模块全面,模块的知识点不仅多,而且零散---一个字!错综复杂 没办法,二八原则抓重点咯!只要抓住那些以后常用开发的方法就可以了,哪些是常用的?往下看--找答案~ ...
随机推荐
- Linux 下sleep()函数
调试程序发现起了一个子线程后,主线程上的sleep不生效了,看到这才明白... — Function: unsigned int sleep (unsigned int seconds) The sl ...
- BZOJ 2115 Xor(抑或值最大路径)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2115 题意:给出一个带权无向图.求一条1到n的路径使得路径上权值的抑或值最大? 思路:( ...
- java.lang.NoSuchMethodError: org.springframework.beans.factory.annotation.InjectionMetadata.<init>(Ljava/lang/Class;)V
相应我,是因为你SPRING MVC的包没有加全.你可以新建一个WEB项目.加入SPRING 3.0 的所有包.主要是WEB类的.就可以解决这个问题了.关键就是少包.特别是你的项目原来是SRPING ...
- Nginx proxy_pass 加与不加 "/" 区别
下面四种情况分别用http://192.168.1.100/proxy/test.html 进行访问. 第一种: location /proxy/ { proxy_pass http://127.0 ...
- HDU 1080 Human Gene Functions
最长公共子序列的变形 题目大意:给出两个基因序列,求这两个序列的最大相似度. 题目中的表格给出了两两脱氧核苷酸的相似度. 状态转移方程为: dp[i][j] = max(dp[i-1][j]+Simi ...
- UVa 10048 Audiophobia【Floyd】
题意:给出一个c个点,s条边组成的无向图,求一点到另一点的路径上最大权值最小的路径,输出这个值 可以将这个 d[i][j]=min(d[i][j],d[i][k]+d[k][j]) 改成 d[i][j ...
- UVa 400 Unix Is
题意:给出n个字符串,按照字典序排列,再按照规则输出. ===学习的紫书,题目意思很清楚,求列数和行数最开始看的时候木有看懂啊啊啊 列数:即为(60-M)/(M+2)+1;即为先将最后那一列减去,算普 ...
- [xUnix 开发环境--01] MAMP mac os 10.10 配置经历、要点——01. phpmyadmin连不上
Mac OS 10.10已经自带了apache2和php(php的路径我至今还没不知道,太懒没去找) 用brew安装mysql, 在官网上下载了phpmyadmin,按官方方式配置完后,登录不上,也不 ...
- phonegap配置启动动画
以下有2种方式 1 主Active中 onCreate函数里添加代码 2 config.xml文件进行配置(对通过命令行模式下cordova命令行生成的可行) 确保自己安装了SplashScreen插 ...
- 【原创】搭建Nginx(负载均衡)+Redis(Session共享)+Tomcat集群
为什么移除首页?哪里不符合要求?倒是回我邮件啊! 一.环境搭建 Linux下Vagrant搭建Tomcat7.Java7 二.Nginx的安装配置与测试 *虚拟机下转至root sudo -i 1)下 ...