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【基础第三篇】的更多相关文章

  1. Python基础第三篇

    一.collections系列 Counter是对字典类型的补充,用于追踪值的出现次数,具备字典的所有功能 + 自己的功能 1.计数器Counter import collections a='aba ...

  2. python基础-第三篇-函数编程

    基本数据类型之set set是无序不允许重复的集合 set创建:s = set() 创建空集合  s = {11,22,33} 转换s = set(可迭代数据) li = [11,22,33,44] ...

  3. Python 基础语法(三)

    Python 基础语法(三) --------------------------------------------接 Python 基础语法(二)------------------------- ...

  4. NHibernate 映射基础(第三篇) 简单映射、联合主键

    NHibernate 映射基础(第三篇) 简单映射.联合主键 NHibernate完全靠配置文件获取其所需的一切信息,其中映射文件,是其获取数据库与C#程序关系的所有信息来源. 一.简单映射 下面先来 ...

  5. Python基础知识(三)

    Python基础知识(三) 一丶整型 #二进制转成十进制的方法 # 128 64 32 16 8 4 2 1 1 1 1 1 1 1 例如数字5 : 101 #十进制转成二进制的方法 递归除取余数,从 ...

  6. Python基础学习三

    Python基础学习三 1.列表与元组 len()函数:可以获取列表的元素个数. append()函数:用于在列表的最后添加元素. sort()函数:用于排序元素 insert()函数:用于在指定位置 ...

  7. python数据挖掘第三篇-垃圾短信文本分类

    数据挖掘第三篇-文本分类 文本分类总体上包括8个步骤.数据探索分析->数据抽取->文本预处理->分词->去除停用词->文本向量化表示->分类器->模型评估.重 ...

  8. Python基础【第一篇】

     一.Python简介 Python的创始人(Guido von Rossum 荷兰人),Guido希望有一种语言既能像C一样方便地调用操作系统的功能接口,也能像shell脚本一样,轻松地实现编程,A ...

  9. Python 基础学习 总结篇

    Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...

  10. python基础-第六篇-6.2模块

    python之强大,就是因为它其提供的模块全面,模块的知识点不仅多,而且零散---一个字!错综复杂 没办法,二八原则抓重点咯!只要抓住那些以后常用开发的方法就可以了,哪些是常用的?往下看--找答案~ ...

随机推荐

  1. Sass&Compass学习笔记(一)

    1.sass中可以使用变量 变量名以$符号开头,可包含所有可用作CSS类名的字符,包括下划线和中划线. 可见,中划线也是可以作为命名的字符,这是与很多其他语言的不同之处.变量的使用实例: $compa ...

  2. Redhat6下安装QEMU

    Redhat6下安装QEMU 1.下载QEUM:http://wiki.qemu.org/Download 2.解压qemu-1.6.1.tar.bz2到/tmp目录(也可以是其他目录)下,并进入解压 ...

  3. 深入理解Java内存模型(五)——锁

    锁的释放-获取建立的happens before 关系 锁是java并发编程中最重要的同步机制.锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息. 下面是锁释放-获取的示例代 ...

  4. 【分享】IT产业中的三大定理(二) —— 安迪&比尔定理 (Andy and Bill's Law)

    摩尔定理给所有的计算机消费者带来一个希望,如果我今天嫌计算机太贵买不起,那么我等十八个月就可以用一半的价钱来买.要真是这样简单的话,计算机的销售量就上不去了.需要买计算机的人会多等几个月,已经有计算机 ...

  5. django中的filter和get的区别 (MultipleObjectsReturned: get() returned more than one Publisher --)(DoesNotExist: Publisher matching query does not exist.)

    上面的例子中`` filter()`` 函数返回一个记录集,这个记录集是一个列表. 相对列表来说,有些时候我们更需要获取单个的对象, `` get()`` 方法就是在此时使用的: >>&g ...

  6. BZOJ 1047 理想的正方形(单调队列)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1047 题意:给出一个n*m的矩阵.在所有K*K的子矩阵中,最大最小差值最小的是多少? 思 ...

  7. 等额本息Vs等额本金

    1:贷款种类一旦选择不能改变.2:你提前还款的全部属于本金部分,若能一次性归还本金只需付清当月月息即可[不按年利率计算而是月利率],与你归还的本金违约金[设:提前还款10万*X.XXX%=违约金,具体 ...

  8. Android无法访问本地服务器(localhost)的解决方案

    在Android开发中通过localhost或127.0.0.1访问本地服务器时,会报java.net.ConnectException: localhost/127.0.0.1:8083 -Conn ...

  9. SQLite及ORMlite在WebApp中的使用

    Spring 配置 下面的databaseUrl在windows下,指向了c:/user/yourhome路径,暂时没想到怎么配置到WEBAPP根路径下. 因为是轻量级工控webapp,数据库规模不大 ...

  10. R语言实战读书笔记(二)创建数据集

    2.2.2 矩阵 matrix(vector,nrow,ncol,byrow,dimnames,char_vector_rownames,char_vector_colnames) 其中: byrow ...