python 学习第三天
一,Python的数据结构-集合
1,集合的定义
Python中集合是以{}括起来的,例如x=set({1,2,3,4,5}),这就是一个集合,集合的特点有:(1),去重的(2),无序的,集合的作用用:如下,(1)去重,把一个列表变成集合,就自动去重了(2)关系测试,测试两组数据之前的交集、差集、并集等关系
对于集合的无序这里要说一下,并不是你定义的时候不能写重复的元素,其实是可以写重复的元素的,并且python也不会报错,只不过在输出的时候时候,或者在做其它方面的处理时,python会已去重的集合来做运算,举个例子:
x={1,2,2,3,4,4}
print(x)
{1, 2, 3, 4}
2,集合的方法
(1) x.add(*)增加一个元素.x.pop()删除一个元素,x.remove(*)删除一个指定的元素
x={1,2,4,7}
x.add(5)
print(x)
x.pop()
print(x)
x.remove(4)
print(x)
(2) x.union(y)求x集合和y集合的并集,x.difference(y)求x中有但y中没有的元素,x.intersection(y)求x和y的交集
x={1,2,4,7}
y={4,5,6,2}
print(x.union(y))
print(x.difference(y))
print(x.intersection(y))
(3) x.issubset(y)若x包含于y,返回True,x.issuperset(y) 若x包含y,返回True
x={2,4}
y={4,5,6,2}
print(x.issubset(y))
print(x.issuperset(y))
(4)len(x) 获取xj集合的长度,清除x集合中的数据
x={2,4}
print(len(x))
x.clear()
print(x)
二,Python 文件操作
1,open函数语法
open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=True]]]]]])
open函数有很多的参数,常用的是file,mode和encoding
file文件位置,需要加引号
mode文件打开模式,见下面表格
encoding表示的是返回的数据采用何种编码,一般采用utf8或者gbk;
2,mode参数的取值
| Character | Meaning |
| ‘r' | open for reading (default) |
| ‘w' | open for writing, truncating the file first |
| ‘a' | open for writing, appending to the end of the file if it exists |
| ‘b' | binary mode |
| ‘t' | text mode (default) |
| ‘+' | open a disk file for updating (reading and writing) |
| ‘U' | universal newline mode (for backwards compatibility; should not be used in new code) |
其中r、w、a为打开文件的基本模式,对应着只读、只写、追加模式;
b、t、+、U这四个字符,与以上的文件打开模式组合使用,二进制模式,文本模式,读写模式、通用换行符,根据实际情况组合使用、
(1)以r方式打开文件,其中 f为文件句柄,属于一个内存对象
f = open("file.txt","r")
print(f.read())
(2)读取文件中的内容
read() 读取整个文件的内容,readline()每次执行顺序读取一行,readlines()读取文件的所有,并将每一行作为一个元素,存放在列表中,三者的区别,可以以下的代码做一下对比
read()
f = open("file.txt","r")
print(f.read())
f.close()
readline()
f = open("file.txt","r")
print(f.readline())
print(f.readline())
print(f.readline())
f.close()
readlines()
f = open("file.txt","r")
print(f.readlines())
注意:(1)read(),readlines()都是一次性将文件读出,加载到内存中,要是文件比较大,这种两种读法是不可取的,会消耗较大的内存和时间
(2)readline和readlines()读取文件内容时都会读取文件的换行符“\n”,不过可以用split(“\n”)去掉换行符
(3)在操作完文件时一定要将文件关系,f.close()
(4)在读取大文件是,不能用read(),readlines()方法,不过可以用一下更高效的方法来实现读取整个文件,在内存中只有一行
f = open("file.txt","r")
for line in f:
print(line)
f.close()
(3) 写入文件 w “w”模式为重新新建一个文件并写入内容,所以文件本身有文件,需要再写入内容时,一定要将文件原来的内容保存一份
f = open("file.txt","w")
f.write("")
(4) 追加写a "a"是以追加放方式写入文件,注意以a的方式写入文件时,需要在写入内容前加上“\n”,否则,写入内容会追加在最后一行的后面,如果文件不存在,则新建
f = open("file.txt","a")
f.write("\n1234")
(5) r+ 读写模式,r+可读可写,不会创建不存在的文件。如果直接写文件,则从顶部开始写,覆盖之前此位置的内容,如果先读后写,则会在文件最后追加内容。不会创建不存在的文件。
f = open("file.txt","r+")
print(f.read())
f.write("\n44555")
f = open("file.txt","r+")
f.write("345678\n")
print(f.read())
(6) w+ 写读模式,先创建文件,再写,用处不大
(7) a+ 附加加读写 不存在则创建 。需要注意的时open()以a+模式开启了一个附加读写模式的文件,由于是a,所以指针在文件末尾。此时如果做read(),则Python发现指针位置就是EOF,读取到空字符串。
所以以a+模式打开文件后,需要利用seek(0)的方法,将文件指针指向文件头部,然后再读取。也就是说如果没有seek(0) f.read()将读不到文件内容
f = open("file.txt","a+")
f.seek(0)
print(f.read())
f.write("")
(8)f.seek(),
file.seek()方法标准格式是:seek(offset,whence=0)
offset:开始的偏移量,也就是代表需要移动偏移的字节数
whence:给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
(9) 在open函数中,打开文件后,我们需要关闭文件,但以下的打开文件方式,不需要执行关闭文件,代码如下
with open("file.txt","w") as f:
f.write("")
三,编码转换
1,先来说明一下字符编码的发展史
(1) ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。
(2) ASCII 这127个字符完全就可以表示所有英文中能用的的内容了。但是无法支持中文,所以后面出现了ASCII的扩展,gbk、gb2312、gb2318字符编码。这样就可以很好的支持中文了
(3) 仅仅支持中文,英文是不够的,还要支持其它语言,这就出现了“万国编码”unicode。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536, 注:此处说的的是最少2个字节,可能更多。
(4)这里还有个问题:使用的字节增加了,那么造成的直接影响就是使用的空间就直接翻倍了!举例还说:同样是ABCD这些字符存储一篇相同的文章,使用ASCII码如果是1M的话,那么Unicode存储至少2M可能还会更多。为了解决个问题就出现了:UTF-8编码UTF-8编码:是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存
2,编码转化
下图展示了,从utf-8到gbk的转化过程。

3,程序例子,希望下面这个例子能帮助大家理解编码转换
deconde 将某种编码解码为unicode, 需要告诉deconde,转化前的编码,deconde("utf-8")
enconde 讲unicode转化为其他编码,需要告诉enconde,转化到哪个编码,enconde("gbk")
import sys
print(sys.getdefaultencoding())
s="你好"
s_to_gbk=s.encode("gbk")
print(s_to_gbk)
print(s.encode())
s_to_utf8 = s_to_gbk.decode("gbk").encode("utf-8")
print(s_to_utf8)
四,Python的函数
(1) Python的函数书写格式以及函数的调用
def function(): #函数名():
function.... #函数体
function() #函数名()调用函数,
(2)python 传参,形参,实参
形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值
def funt (x,y): #x,y类似于变量参数,叫做形参
num = x+y
print(num) funt(1,2) #1,2为实际的值,叫做实参
python 学习第三天的更多相关文章
- python学习第三次记录
python学习第三次记录 python中常用的数据类型: 整数(int) ,字符串(str),布尔值(bool),列表(list),元组(tuple),字典(dict),集合(set). int.数 ...
- Python 学习 第三天 课后总结:
PYTHON学习第三天课后总结: 1,注释:就是对代码起到说明注解的作用. 注释分为单行注释与多行注释. 单行注释:只注释一行代码在需要注释的所在行的行首使用#号来注释此行,注意#与代码之间需要 ...
- Python学习(三) 八大排序算法的实现(下)
本文Python实现了插入排序.基数排序.希尔排序.冒泡排序.高速排序.直接选择排序.堆排序.归并排序的后面四种. 上篇:Python学习(三) 八大排序算法的实现(上) 1.高速排序 描写叙述 通过 ...
- Python学习-第三天-面向对象编程基础
Python学习-第三天-面向对象编程基础 类和对象 简单的说,类是对象的蓝图和模板,而对象是类的实例.这个解释虽然有点像用概念在解释概念,但是从这句话我们至少可以看出,类是抽象的概念,而对象是具体的 ...
- python 学习(三)
按照上次python 学习(二)的思路,第一步要实现从一个网站的页面上自动获取指定列表中的信息.折腾数日,得到一段可以正常运行的代码,如下: #web2.py import re import url ...
- python学习(三):matplotlib学习
前言:matplotlib是一个python的第三方库,里面的pyplot可以用来作图.下面来学习一下如何使用它的资源. 一.使用前 首先在python中使用任何第三方库时,都必须先将其引入.即: i ...
- webdriver(python) 学习笔记三
知识点:简单的对象定位 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象.一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名,或者他住在哪 ...
- [Python学习] 模块三.基本字符串
于Python最重要的数据类型包含字符串.名单.元组和字典.本文重点介绍Python基础知识. 一.字符串基础 字符串指一有序的字符序列集合,用单引號.双引號.三重(单 ...
- PYTHON学习(三)之利用python进行数据分析(1)---准备工作
学习一门语言就是不断实践,python是目前用于数据分析最流行的语言,我最近买了本书<利用python进行数据分析>(Wes McKinney著),还去图书馆借了本<Python数据 ...
- python学习第三次
while循环 表示当条件成立的时候就循环适用于不知道具体循环次数,但是确定在某个条件成立的情况下就循环while语法:while 条件表达式:语句块#另一种表达方式while 条件表达式:语句块1e ...
随机推荐
- XSS的防御
基于代码修改的防御 和SQL注入防御一样,XSS攻击也是利用了Web页面的编写疏忽,所以还有一种方法就是从Web应用开发的角度来避免: 步骤1.对所有用户提交内容进行可靠的输入验证,包括对URL.查询 ...
- Spring Boot整合Dubbo框架demo
Dubbo框架原理见之前的博文:http://www.cnblogs.com/umgsai/p/5836925.html 首先启动zookeeper Server端 Pom配置如下 <?xml ...
- js设置鼠标悬停改变背景色
看了网上那么多的js鼠标悬停时事件,大多数的,说了那么多话,也没解决什么问题,现在直接贴上代码,以供参考 html: <div id="sign">this is te ...
- asp.net MVC4 异步文件上传
1.下载ajaxfileupload.js 2.在控制器内创建如下方法 //文件上传 public ActionResult uploadFile(HttpPostedFileBase file) { ...
- [老文章搬家] 关于 Huffman 编码
按:去年接手一个项目,涉及到一个一个叫做Mxpeg的非主流视频编码格式,编解码器是厂商以源代码形式提供的,但是可能代码写的不算健壮,以至于我们tcp直连设备很正常,但是经过一个UDP数据分发服务器之后 ...
- 在Node.js使用mysql模块时遇到的坑
之前写了个小程序Node News,用到了MySQL数据库,在本地测试均没神马问题.放上服务器运行一段时间后,偶然发现打开页面的时候页面一直处于等待状态,直到Nginx返回超时错误.于是上服务器检查了 ...
- jqueryUI弹出框问题
jqueryui dialog中 select选不中或比较慢 dialog = function(Window,dialogDivId,title,buttons,css) { css = css|| ...
- WebApp开发之--"rem"单位
随着web app的兴起,rem这是个低调的css单位,近一两年开始崭露头角,有许多朋友对于它的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我认为rem是用来做web app它绝对是 ...
- MySQL 优化MySQL Server
一.使用show variables 和show status 命令查看MySQL的服务器静态参数值和动态运行状态信息. 二.可以使用 mysqld --verbose --help|more 查看某 ...
- 9个基于Java的搜索引擎框架
在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的整容医疗机构(尽管有很大一部分广 ...