一,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 学习第三天的更多相关文章

  1. python学习第三次记录

    python学习第三次记录 python中常用的数据类型: 整数(int) ,字符串(str),布尔值(bool),列表(list),元组(tuple),字典(dict),集合(set). int.数 ...

  2. Python 学习 第三天 课后总结:

    PYTHON学习第三天课后总结: 1,注释:就是对代码起到说明注解的作用.   注释分为单行注释与多行注释.  单行注释:只注释一行代码在需要注释的所在行的行首使用#号来注释此行,注意#与代码之间需要 ...

  3. Python学习(三) 八大排序算法的实现(下)

    本文Python实现了插入排序.基数排序.希尔排序.冒泡排序.高速排序.直接选择排序.堆排序.归并排序的后面四种. 上篇:Python学习(三) 八大排序算法的实现(上) 1.高速排序 描写叙述 通过 ...

  4. Python学习-第三天-面向对象编程基础

    Python学习-第三天-面向对象编程基础 类和对象 简单的说,类是对象的蓝图和模板,而对象是类的实例.这个解释虽然有点像用概念在解释概念,但是从这句话我们至少可以看出,类是抽象的概念,而对象是具体的 ...

  5. python 学习(三)

    按照上次python 学习(二)的思路,第一步要实现从一个网站的页面上自动获取指定列表中的信息.折腾数日,得到一段可以正常运行的代码,如下: #web2.py import re import url ...

  6. python学习(三):matplotlib学习

    前言:matplotlib是一个python的第三方库,里面的pyplot可以用来作图.下面来学习一下如何使用它的资源. 一.使用前 首先在python中使用任何第三方库时,都必须先将其引入.即: i ...

  7. webdriver(python) 学习笔记三

    知识点:简单的对象定位 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象.一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名,或者他住在哪 ...

  8. [Python学习] 模块三.基本字符串

            于Python最重要的数据类型包含字符串.名单.元组和字典.本文重点介绍Python基础知识. 一.字符串基础         字符串指一有序的字符序列集合,用单引號.双引號.三重(单 ...

  9. PYTHON学习(三)之利用python进行数据分析(1)---准备工作

    学习一门语言就是不断实践,python是目前用于数据分析最流行的语言,我最近买了本书<利用python进行数据分析>(Wes McKinney著),还去图书馆借了本<Python数据 ...

  10. python学习第三次

    while循环 表示当条件成立的时候就循环适用于不知道具体循环次数,但是确定在某个条件成立的情况下就循环while语法:while 条件表达式:语句块#另一种表达方式while 条件表达式:语句块1e ...

随机推荐

  1. 关于ie版本判断

    //see: http://tanalin.com/en/articles/ie-version-js/ var browser = function(){ var isIE=!!window.Act ...

  2. JQuery+Ajax+Struts2+Hibernate 实现完整的登录注册

    写在最前: 下午有招聘会,不想去,总觉得没有准备好,而且都是一些不对口的公司,可是又静不下心来,就来写个博客. 最近在仿造一个书城的网站:http://www.yousuu.com ,UI直接拿来用, ...

  3. CSS3使用Font Awesome字体图标的控件样例(按钮,工具栏,输入框)

    按钮上加入font awesome图标,用原生的input button标签无法实现,查看网上的只能通过<a><li></li></a>实现此功能,通过 ...

  4. js 中histroy.back()与history.go()的区别

    样例: js6.jsp <%@ page language="java" import="java.util.*" pageEncoding=" ...

  5. Sublime Text3插件管理

    插件安装 package control 安装Sublime Text3 打开Sublime Text3,Ctrl+~ 调出控制台,输入代码安装 package control 代码如下: impor ...

  6. 元素堆叠问题、z-index、position

    多次在项目中遇到html页面元素的非期待重叠错误,多数还是position定位情况下z-index的问题.其实每次解决类似问题思路大致都是一样的,说到底还是对z-index的理解比较模糊,可以解决问题 ...

  7. set使用方法

    set 添加一个无序的,用set方法,访问速度快,天生解决了重复问题 1.difference 指定某个元素从原来set取出,并生成新的set #difference a = set(["a ...

  8. Ruby on Rails 创建https应用

    1. 创建证书请求文件条件:私钥+证书签名请求+opensslyum install -y opensslmkdir /root/ssl/ && cd /root/ssl/openss ...

  9. $_SERVER 详情

    $_SERVER['HTTP_ACCEPT_LANGUAGE']//浏览器语言 $_SERVER['REMOTE_ADDR'] //当前用户 IP . $_SERVER['REMOTE_HOST'] ...

  10. 学号20145332 《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验

    实验目的 掌握在 ARM 开发板实现一个简单 WEB 服务器的过程. 学习在 ARM 开发板上的 SOCKET 网络编程. 学习 Linux 下的 signal()函数的使用. 实验内容 学习使用 s ...