iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python培训Day3 随笔
  • 580
分享到

python培训Day3 随笔

随笔python 2023-01-31 06:01:33 580人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

collections类这个类相当于一个扩展包,包含针对字典、列表、元组等数据类型的一些扩展操作。1、计数器Counter#计数器可以列出字符串和列表中元素出现的个数,并以字典返回>>> import collection

collections类

这个类相当于一个扩展包,包含针对字典、列表、元组等数据类型的一些扩展操作。

1、计数器Counter

#计数器可以列出字符串和列表中元素出现的个数,并以字典返回

>>> import collections
>>> li=['a','b','a','c','a','b','d','d','a']
>>> st='asdasdasdasdasda'
>>> li_c=collections.Counter(li)
>>> st_c=collections.Counter(st)
>>> print li_c
Counter({'a': 4, 'b': 2, 'd': 2, 'c': 1})
>>> print st_c
Counter({'a': 6, 's': 5, 'd': 5})
#通过most_comm()方法可以指定显示出现次数排名前n位的元素
>>> print li_c.most_common(3)
[('a', 4), ('b', 2), ('d', 2)]

#update()方法可以将两个计数器的统计结果相加

>>> import collections
>>> li_a=['a','b','a','c','a']
>>> li_b=['b','c']
>>> li_a_co=collections.Counter(li_a)
>>> li_b_co=collections.Counter(li_b)
>>> print li_a_co
Counter({'a': 3, 'c': 1, 'b': 1})
>>> print li_b_co
Counter({'c': 1, 'b': 1})
>>> li_a_co.update(li_b_co) 
>>> print li_a_co
Counter({'a': 3, 'c': 2, 'b': 2})


2、有序字典

#有序字典的的操作方法和标准字典完全一致,唯一的区别就是有序字典里的key是可以按照顺序展现出来的,这是因为有有序字典其实就是在标准字典的基础上又将key都存入了一个列表,通过列表管理key

>>> import collections
>>> ord_dic=collections.OrderedDict()
>>> ord_dic={}


3、默认字典

#标准字典中value的值数据类型是需要提前定义的,否则直接向value中添加数据就可能有问题。例如如下需求:

有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。

即: {'k1': 大于66 , 'k2': 小于66}

#传统实现方式

li=[11,22,33,44,55,66,77,88,99,90]
list_a=[]
list_b=[]
dic={'k1':list_a,'k2':list_b}
for i in li:
    if i > 66:
        dic['k1'].append(i)
    else:
        dic['k2'].append(i)
print dic


#用默认字典方式

import collections
#coding:utf-8
li=[11, 22, 33,44,55,66,77,88,99,90]
#用默认字典方法提前定义value的数据类型
dic=collections.defaultdict(list)
for value in li:
    if value>66:
        dic['k1'].append(value)
    else:
        dic['k2'].append(value)
print dic


队列

#队列分为双向队列和单向队列,所有的队列都是有进程安全的。

双向队列是队列两边都可以增减操作,是FIFO模式的

单向队列只有一边可以增减操作,所以单向队列就是个堆栈。

这部分以后会用到,现在暂时知道原理就好了。


文件的处理

#文件处理的流程一般是

打开文件->操作文件->关闭文件

一、打开文件

f=open('文件名','打开模式')

打开文件的模式有:

r,只读模式(默认)。

w,只写模式。【不可读;不存在则创建;存在则删除内容;】

a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

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

r+,可读写文件。【可读;可写;可追加】

w+,无意义

a+,同a

"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

rU

r+U

"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

rb

wb

ab


文件的处理

flush()

#flush方法可以将缓存中的内容刷写到硬盘上,但是还要考虑的是这个刷写只是涉及python的缓存,至于到底什么时候才能真的写到硬盘上。还得看系统缓存。

f=open('test.txt','w')
f.write('aaaa')
f.flush()
f.close


read(),readline(),readlines()

#read(),readline(),readlines()方法的区别是

read(n)是一次性把问文件内容读入内存,n表示每次要读入的字节数,默认是读取所有数据

>>> f=open('test.txt','r')
>>> x=f.read()
>>> f.close()
>>> x
'1 213123123\n2 123123123123\n3 1231231231231\n4 23123123123123\n5 123123123123123\n'


readlines()是一次性把文件内容读入内存,并将源文件中每一行的内容读入列表作为一个元组

[wgw@mail ~]$ cat test.txt 
1 213123123
2 123123123123
3 1231231231231
4 23123123123123
5 123123123123123

使用readliness读取的结果为

f=open('test.txt','r')
x=f.readlines()
f.close()
print x
['1 213123123\n', '2 123123123123\n', '3 1231231231231\n', '4 23123123123123\n', '5 123123123123123\n']

readline()是每次只把源文件中的一行读入内存中

f=open('test.txt','r')
x=f.readline()
f.close()
print x
1 213123123

还一个xreadline()的方法是每次读取一行到内存中,并打印出来一行的内容。之后

依次循环知道所有内容都打印完,这样就避免超大文本的读取的时候直接把内存撑爆。

不过现在这个方法已经被废弃,取而代之的是直接for循环句柄的方式来读取

f=open('test.txt','r')
    for line in f:
        print line
f.close()
1 213123123
2 123123123123
3 1231231231231
4 23123123123123
5 123123123123123


next()

#读取下一行数据,若没有则触发StopIteration的异常

f=open('test.txt','r')
for i in range(3):
    x=f.next()
    print x
f.close()
1 213123123
2 123123123123
3 1231231231231


seek()

#表示调整当前读取一行数据的位置指针,默认都是每一行的第一个字节开始读取。但是如果

读取第二个字节以后的内容就需要通过seek()方法调整指针的读取位置

[wgw@mail ~]$ cat test.txt 
1122334455
f=open('test.txt','r')
#从第二个字节开始向后读
f.seek(2)
x=f.readline()
print x
f.close()
[wgw@mail ~]$ Python test.py 
22334455


tell()

#返回目前指针的读取位置

#!/usr/bin/env python
#-*-coding:utf8-*-
f=open('test.txt','r')
position=f.tell()
print '起始的指针位置:',position
f.seek(2)
position=f.tell()
print '调整后的指针位置:',position
x=f.readline()
print x
position=f.tell()
print '读完一行最后的指针位置:',position
f.close()
[wgw@mail ~]$ python test.py 
起始的指针位置: 0
调整后的指针位置: 2
22334455
读完一行最后的指针位置: 11


truncate(n)

#截取字符串,只保留指定的指针位置n之前的字符串,其余的全部删除并将结果写回到源文件。

#!/usr/bin/env python
#-*-coding:utf8-*-
#打开方式必须是可读写的r+
f=open('test.txt','r+')
#从f1文件的第二个字节位置开始截取
f.truncate(2)
print f.readlines()
f.close
[wgw@mail ~]$ cat test.txt 
11


write()

#写入一个字符串到文件中

>>> f=open('test.txt','w')
>>> f.write('wgw')
>>> f.close()
[wgw@mail ~]$ cat test.txt 
wgw


writelines()

#将字符串,列表,字典等数据类型一次性写入文件中。当列表中必须都是字符串,而写入字典的话讲只有key值看不到value值

#!/usr/bin/env python
#-*-coding:utf8-*-
test_list=['1','a','b','c','\n']
test_dic={'k1':'10cc','k2':20}
f=open('test.txt','a')
f.writelines(test_list)
f.writelines(test_dic)
f.close()
[wgw@mail ~]$ cat test.txt 
1abc
k2k1


with

#普通的打开文件方式每次都要调用close()方法关闭文件。使用with方法打开文件就可以自动关闭文件

with open('test.txt','a') as f:
    x=f.read()
    print x

并且用with方法可以同时打开多个文件

with open('test.txt','a') as f1,open('wgw.txt','r') as f2:


函数

函数的作用是将代码模块化,使同一功能的代码可以被反复调用

函数分为三大类:

一、内置函数

内置函数是python自身就集成好的功能模块,需要熟知的内置函数如下

help()

dir()

vars()

type()


reload(temp)

id([12])

is

------------------

cmp(2,3)

abs()

bool()

divmod(10,3),分页

max()

min()

sum()

pow(2, 11) 求幂 <==> 2**11

------------------

len()

all() 接受一个序列,判断,所有值都是真,返回真,否则假

any() 接受一个序列,判断,只要有一个值为真,返回真,否则假

------------------

chr() 

ord()

hex()

oct()

bin()

------------------

print range(10)

print xrange(10)

for i in xrange(10):

    print i

for k,v in enumerate([1,2,3,4],执行数字起始值):

    print k,v


二、自定义函数

#当python自身提供的函数不能满足需求的时候,就可以自己定义函数

格式如下

1、def 定义函数的关键字

2、函数名,日后通过函数名调用该函数

3、函数声明,不自动执行;调用后才执行   if __name__='main':

4、函数的参数

5、函数的返回值

#!/usr/bin/env python
#coding:uft-8
def myfunc(x,y):
    return x+y
w=myfunc(1,2)
3

返回值:

1、未明确制定返回值,返回 None

2、返回值可以赋值给某个变量


其中括号中的内容就是函数的参数,参数的分类如下:

1)普通参数

如上面列子中展示的x,y就是定义的普通的参数

2)默认参数

默认参数的意思就是在定义参数的时候给参数提供一个默认值,如果有新的值赋进来就用新的值。如果没有新值就用采用默认参数。但是要注意:1、不传,则使用默认 2、默认参数必须放在参数列表的最后

def myfunc(x,y=5):
    return x+y
w=myfunc(1,2)
#第二次调用的时候,只给x赋值为1而没有指定y参数的值
z=myfunc(1)
print w
print z
3
6

3)动态参数

普通参数和默认参数只能传入一个数字或者字符串,当我们要传入一个列表或者字典的时候就需要用到

动态参数

1、当需要传入一个列表的时候,在定义参数的时候要用一个*号和args表示要引用列表

def myfunc(*args):
    print args
li=['aa','bb','cc']
myfunc(*li)
#或者用myfunc(aa,bb,cc)方式执行
('aa', 'bb', 'cc')

2、当要传入一个字典的时候,在定义参数的时候要用两个个*号和kwargs表示要引用字典

def myfunc(**kwargs):
    print kwargs
dic={'aa':11,'bb':22,'cc':33}
myfunc(**dic)
#或者用myfunc(aa=11,bb=22,cc=33)方式调用,但是注意只能用=号连接k,v值
{'aa': 11, 'cc': 33, 'bb': 22}

3、当传入的参数即有可能是列表也有可能是字典的时候,就需要将两种设置方式都写入函数中。

函数在调用的时候会自动判断传入的数据类型

只传入列表

def myfunc(*args,**kwargs):
    print args
    print kwargs
li=[77,88,99]
dic={'aa':11,'bb':22,'cc':33}
myfunc(*li)
(77, 88, 99)
{}

只传入字典

def myfunc(*args,**kwargs):
    print args
    print kwargs
li=[77,88,99]
dic={'aa':11,'bb':22,'cc':33}
myfunc(**dic)
()
{'aa': 11, 'cc': 33, 'bb': 22}

既有列表又有字典

def myfunc(*args,**kwargs):
    print args
    print kwargs
li=[77,88,99]
dic={'aa':11,'bb':22,'cc':33}
myfunc(*li,**dic)
(77, 88, 99)
{'aa': 11, 'cc': 33, 'bb': 22}


三、第三方函数和模块

第三方函数和模块主要是指从网上下载的别人写好的函数 通过import导入之后使用的函数

--结束END--

本文标题: python培训Day3 随笔

本文链接: https://www.lsjlt.com/news/189927.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python培训Day3 随笔
    collections类这个类相当于一个扩展包,包含针对字典、列表、元组等数据类型的一些扩展操作。1、计数器Counter#计数器可以列出字符串和列表中元素出现的个数,并以字典返回>>> import collection...
    99+
    2023-01-31
    随笔 python
  • day3 python 学习随笔
    三目运算(三元运算)例:result = 1 if 2 == 2 else 32. set是一个无序且不重复的元素集合3.生成器range不是生成器 和 xrange 是生成器readlines不是生成器 和 xreadlines 是生成器...
    99+
    2023-01-31
    随笔 python
  • python笔记day3
    字典修改或者添加:dict['key'] = value程序二:file1.txt文件内容如下:alex|123|1carrick|123|1tony|123|1从文件file1.txt中读出内容,写成dic = {'carrick': [...
    99+
    2023-01-31
    笔记 python
  • python爬虫笔记-day3
    正则使用的注意点re.findall("a(.*)b","str"),能够返回括号中的内容,括号前后的内容起到定位和过滤的效果原始字符串r,待匹配字符串中有反斜杠的时候,使用r能够忽视反斜杠带来的转义的效果点号默认情况匹配不到\n\s能够匹...
    99+
    2023-01-31
    爬虫 笔记 python
  • 扣丁学堂Python培训之Python
    今天千锋扣丁学堂Python培训老师给大家分享一篇关于python3字符串操作总结的详细介绍,中通过示例代码介绍的非常详细,下面我们一起来看一下吧。 字符串截取 s = 'hello's[0:3]'he's[:] #截取全部字符'hell...
    99+
    2023-01-31
    丁学堂 Python
  • python培训入门之python爬虫
    老男孩教育python培训教你用python爬虫开发技术网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引...
    99+
    2023-01-31
    爬虫 入门 python
  • python 随笔
    # -*- coding: cp936 -*- import os,sys,time,smtplib,poplib #python -m BaseHTTPServer 80 在运行里面运行 #########...
    99+
    2023-01-31
    随笔 python
  • python随笔:range
    range()是一个用来创建算数级数序列的通用函数。python3里,有自己的类型,range型。暂时的理解,实际是一个(32位电脑/python (-2**31,+2**31)),(64位电脑/python (-2**63,+2**63)...
    99+
    2023-01-31
    随笔 python range
  • 扣丁学堂Python培训简述Pytho
    本篇文章扣丁学堂Python培训小编给读者们分享一下Python线程池模块ThreadPoolExecutor用法,文中结合实例形式分析了Python线程池模块ThreadPoolExecutor的导入与基本使用方法,对此感兴趣的小伙伴就...
    99+
    2023-01-31
    丁学堂 Python Pytho
  • 扣丁学堂Python培训详解Pytho
    Python生成器与迭代器对于喜欢Python开发的小伙伴们来说应该是不陌生的,不了解的小伙伴也没有关系,本篇文章扣丁学堂Python培训小编就给小伙伴们详解一下Python生成器与迭代器,感兴趣的小伙伴就随小编来了解一下吧。 列表生成式...
    99+
    2023-01-31
    详解 丁学堂 Python
  • Python随笔day01
    环境变量的配置:   配置Python的安装目录到path变量中,例如C:\Python37 标识符的命名规则:        变量名只能以数字,字母,下划线组成。        不能以数字开头,保留字不能被使用。        建议使用...
    99+
    2023-01-30
    随笔 Python
  • Python培训机构就业靠不靠谱?
     Python培训机构就业靠不靠谱大家在准备开始学习Python的时候,就会考虑是选择培训还是自学。靠谱吗这不好说,有些培训机构没有教给大家真正的Python技能,自然就不好就业了。   还有一种可能是你找到了好的培训机构,但没有真正用心去...
    99+
    2023-01-31
    培训机构 Python
  • 扣丁学堂Python培训之基于itch
    今天扣丁学堂Python培训老师给大家分享一个基于itchat模块实现微信防撤回的案例,比如有时候,女神发来一条消息,说约你看电影,她考虑了一下,又撤回了,不约你了…而你又想知道她究竟发了什么,该怎么办?微信防撤回了解一下。 环境要求 P...
    99+
    2023-01-31
    丁学堂 Python itch
  • Python随笔(四)、python基础
    05 python s12 day4 迭代器原理及使用什么是迭代:可以直接作用于for循环的对象统称为可迭代对象(Iterable)。*可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator)。所有的Iterabl...
    99+
    2023-01-31
    随笔 基础 Python
  • Python随笔(三)、python基础
    一、练习:#!usr/bin/env python #-*- coding:utf-8 _*-  """ @author:Administrator @file: dictionary.py@time: 2017/11/19 """'''有...
    99+
    2023-01-31
    随笔 基础 Python
  • 千锋扣丁学堂Python培训之Web版
    今天千锋扣丁学堂Python培训老师给大家分一篇关于PythonWeb版语音合成实例详解,首先语音合成技术能将用户输入的文字,转换成流畅自然的语音输出,并且可以支持语速、音调、音量设置,打破传统文字式人机交互的方式,让人机沟通更自然,下面...
    99+
    2023-01-31
    丁学堂 千锋扣 Web
  • Python随笔(二)、python基础
    源自:http://www.cnblogs.com/wupeiqi/articles/4906230.html一、接收执行参数sys.argv   接收执行参数的函数#!usr/bin/env python #-*- coding:utf-...
    99+
    2023-01-31
    随笔 基础 Python
  • Python随笔(一)、python基础
    在pycharm下设置自己的模板:在File---settings---File and Code Templates---Python script 脚本里添加:#!/usr/bin/env python #-*- coding:utf-...
    99+
    2023-01-31
    随笔 基础 Python
  • python培训之零基础如何学习pyth
    老男孩python培训教你如何零基础学python根据TIOBE最新排名,Python已超越C#,与Java,C,C++成为全球前5大流行编程语言之一。从云端、客户端,到物联网终端,python应用无处不在。从国内的百度、阿里、腾讯、网易、...
    99+
    2023-01-31
    基础 python pyth
  • 好程序员web前端培训分享JavaScript学习笔记SASS
      好程序员web前端培训分享JavaScript学习笔记SASS,世界上最成熟、最稳定、最强大的专业级CSS扩展语言!· sass 是一个 css 的预编译工具· 也就是能够 更优雅 的书...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作