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 ...
随机推荐
- 关于ie版本判断
//see: http://tanalin.com/en/articles/ie-version-js/ var browser = function(){ var isIE=!!window.Act ...
- JQuery+Ajax+Struts2+Hibernate 实现完整的登录注册
写在最前: 下午有招聘会,不想去,总觉得没有准备好,而且都是一些不对口的公司,可是又静不下心来,就来写个博客. 最近在仿造一个书城的网站:http://www.yousuu.com ,UI直接拿来用, ...
- CSS3使用Font Awesome字体图标的控件样例(按钮,工具栏,输入框)
按钮上加入font awesome图标,用原生的input button标签无法实现,查看网上的只能通过<a><li></li></a>实现此功能,通过 ...
- js 中histroy.back()与history.go()的区别
样例: js6.jsp <%@ page language="java" import="java.util.*" pageEncoding=" ...
- Sublime Text3插件管理
插件安装 package control 安装Sublime Text3 打开Sublime Text3,Ctrl+~ 调出控制台,输入代码安装 package control 代码如下: impor ...
- 元素堆叠问题、z-index、position
多次在项目中遇到html页面元素的非期待重叠错误,多数还是position定位情况下z-index的问题.其实每次解决类似问题思路大致都是一样的,说到底还是对z-index的理解比较模糊,可以解决问题 ...
- set使用方法
set 添加一个无序的,用set方法,访问速度快,天生解决了重复问题 1.difference 指定某个元素从原来set取出,并生成新的set #difference a = set(["a ...
- Ruby on Rails 创建https应用
1. 创建证书请求文件条件:私钥+证书签名请求+opensslyum install -y opensslmkdir /root/ssl/ && cd /root/ssl/openss ...
- $_SERVER 详情
$_SERVER['HTTP_ACCEPT_LANGUAGE']//浏览器语言 $_SERVER['REMOTE_ADDR'] //当前用户 IP . $_SERVER['REMOTE_HOST'] ...
- 学号20145332 《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验
实验目的 掌握在 ARM 开发板实现一个简单 WEB 服务器的过程. 学习在 ARM 开发板上的 SOCKET 网络编程. 学习 Linux 下的 signal()函数的使用. 实验内容 学习使用 s ...