1.        集合

1.1      特性

集合是一个无序的,不重复的数据组合,主要作用如下:

  • 去重,把一个列表变成集合实现自动去重。
  • set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作。

1.2     常用操作:

s = set([3,5,9,10])

# 创建一个数值集合

t = set("Hello")

# 创建一个唯一字符的集合

a = t | s

# 求 t 和 s 的并集

b = t & s

# 求 t 和 s 的交集

c = t – s

# 求差集(项在 t 中,但不在 s 中)

d = t ^ s

# 求对称差集(项在 t 或 s 中,但不同时出现在二者中)

1.3      基本操作:

t.add('x')

# 添加一项

s.update([10,37,42])

# 在 s 中添加多项

t.remove('H')

# 删除一项

len(s)

#  s e t 的长度

x in s

# 测试 x 是否是 s 的成员

x not in s

# 测试 x 是否不是 s 的成员

s.issubset(t)

s <= t

# 测试是否 s 中的每一个元素都在 t 中

s.issuperset(t)

s >= t

# 测试是否 t 中的每一个元素都在 s 中

s.union(t)

s | t

# 返回一个新的 set 包含 s 和 t 中的每一个元素

s.intersection(t)

s & t

# 返回一个新的 set 包含 s 和 t 中的公共元素

s.difference(t)

s - t

# 返回一个新的 set 包含 s 中有但是 t 中没有的元素

s.symmetric_difference(t)

s ^ t

# 返回一个新的 set 包含 s 和 t 中不重复的元素

s.copy()

# 返回 set “s”的一个浅复制

2.       文件操作

2.1     文件操作流程

示例文件:

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

dbus:x:81:81:System message bus:/:/sbin/nologin

2.2     基本操作

f = open('file.txt')

# 打开文件

first_line = f.readline()

 

print('first line:',first_line)

# 读一行

print('我是分隔线'.center(50,'-'))

 

data = f.read()

# 读取剩下的所有内容,文件大时不要用

print(data)

# 打印文件

f.close()

# 关闭文件

2.3    打开文件的模式

  • r,只读模式(默认)。

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

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

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

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

    > w+,写读

    > a+,同a

    "b" 表示处理二进制文件

    > rb

    > wb

    > ab

2.4     with语句

为了避免打开文件后忘记关闭,可以通过管理上下文,即:

1

2

3

with open('log','r') as f:

...

 

3.      字符编码与转码

3.1    字符编码方式

3.1.1  ASCII编码

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。

3.1.2   Unicode编码

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,所有的字符和符号最少(可能更多)由 16 位来表示(2个字节),即:2 **16 = 65536,这里还有个问题:字节数增加后使用空间会直接翻倍!举例还说:同样是ABCD这些字符存储一篇相同的文章,使用ASCII码如果是1M的话,那么Unicode存储至少2M可能还会更多。

3.1.3   UTF-8编码

是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存... 通过这种可扩展的方式来存储。

在2.x版本的Python中,解释.py文件的时候,默认是给他一个编码的就是ASCII码,如果在2.x版本中不指定编码并且在.py文件中写了一个ASCII码中没有的字符就会显示乱码,不过这个问题在Python3中就不存在了,因为在Python3中默认就是Unicode编码

3.2     Python编码转化

3.2.1   Python3中的编码转换

#在Python3中默认就是unicode编码

#!/usr/bin/env python
#-*- coding:utf-8 -*-

name = '小岳岳'
#转为UTF-8编码
print(name.encode('UTF-8'))
#转为GBK编码
print(name.encode('GBK'))
#转为ASCII编码(报错为什么?因为ASCII码表中没有‘小岳岳’这个字符集~~)
print(name.encode('ASCII'))

3.2.2   Pyton2.x中的编码转换

#因为在python2.x中默认是ASCII编码,你在文件中指定编码为UTF-8,但是UTF-8如果你想转GBK的话是不能直接转的,需要Unicode做一个转接站点。

GBK转换为UTF-8格式流程:

> 首先通过解码(decode)转换为Unicode编码

> 然后通过编码(encode)转换为UTF-8编码

UTF-8转换为GBK格式流程:

> 首先通过解码(decode)转换为Unicode编码

> 然后通过编码(encode)转换为GBK编码

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import chardet
name = '小岳岳'
print chardet.detect(name)
#先解码为Unicode编码,然后再从Unicode编码为GBK
new_name = name.decode('UTF-8').encode('GBK')
print chardet.detect(new_name)

4.      函数

4.1    基本语法

函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。

特性:

  • 减少重复代码
  • 使程序变的可扩展
  • 使程序变得易维护

语法:

def function_name():#函数名

print("Hello, World!")

function_name() #调用函数

可以带参数:

def calc(x,y):

res = x**y

return res #返回函数执行结果

c = calc(a,b) #结果赋值给c变量

print(c)

4.2      函数参数与变量

4.2.1   函数参数

形参是在函数被调用时才分配内存单元,调用结束时立即释放所分配的内存单元,so,形参只在函数内部有效。

实参可以是常量、变量、表达式、函数等,实参在进行函数调用时必须有确,以便把这些值传给形参。故应预先用赋值,输入等办法使参数获得确定值。

上述函数中x,y是形参,a,b是实参。

默认参数

Def stu_register(name,age,country=”CN”):

这样,country参数在调用时不指定就是默认参数CN,指定了的话就是你指定的值。默认参数必须放在未指定默认值的后面。

关键参数

若给函数传参是不想按顺序的话可以指定关键字参数,只需指定参数名即可,但是,关键参数必须放在位置参数之后。

语法:

Stu_register(age=22,name=”poker”)

非固定参数

若函数定义时不确定用户想出入多少个参数,可使用非固定参数

 

Def stu_register(name,age,*args)  #args会把多传入的参数变成一个元组形式

Print(name,age,args)

Stu_register(“poker”,22)

#输出

Poker 22 ()  #后面这个空元组就是args,因为没传参所以空


Stu_register(“Tom”,28,”CN”,”Python”)

#输出

Tom 28 (‘CN’,’Python’)


还有一个**kwargs

Def stu_register(name,age,*args,**kwargs): #kwargs会把多传入的参数变成一个字典形式

Print(name,age,kwargs)

Stu_register(‘poker’,22)

#输出

#poker 22 () {} #后面这个{}就是kwargs,因为没传值,所以为空


Stu_register(“Tom”,28,”CN”,”Python”,sex=”Male”,school=”Qinghua”)

#输出

#Tom 28 (‘CN’,’Python’) {‘school’:’Qinghua’,’sex’:’Male’}

4.2.2   全局与局部变量

在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。

全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。

当全局变量与局部变量同名时,在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

返回值

Return语句可以返回函数的返回值

> 函数执行时遇到return就会停止执行并返回结果,也代表着函数的结束

> 未指定return,函数返回None

递归

函数内部可以调用其他函数,若函数内部调用自身,该函数为递归函数。

def calc(n):

    print(n)

    if int(n/2) ==0:

        return n

    return calc(int(n/2))

calc(10)

输出:

10

5

2

1

递归特性:

> 需明确结束条件

> 进入更深一层递归时,规模要比上次有所减少

> 递归效率不高,递归层次过多会导致栈溢出

高阶函数

变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

1

2

3

4

5

6

def add(x,y,f):

return f(x) + f(y)

res = add(3,-6,abs)

print(res)

 

 

 

 

Python自动化 【第三篇】:Python基础-集合、文件操作、字符编码与转码、函数的更多相关文章

  1. python基础之 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  2. 【python自动化第三篇:python入门进阶】

    鸡汤: 多学习,多看书. 推荐书籍:<追风筝的人>,<林达看美国>,<白鹿原> 本节知识点 集合及其操作 文件操作 函数与函数式编程 递归 一.集合及其操作 集合( ...

  3. Day2 - Python基础2 列表、字符串、字典、集合、文件、字符编码

    本节内容 列表.元组操作 数字操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 ...

  4. Python基础2 列表 元祖 字符串 字典 集合 文件操作 -DAY2

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  5. python学习笔记(2)--列表、元组、字符串、字典、集合、文件、字符编码

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1.列表和元组的操作 列表是我们以后最长用的数据类型之一,通过列表可以最方便的对数据实现最方便的存储.修改等操作 定 ...

  6. Python自动化 【第二篇】:Python基础-列表、元组、字典

    本节内容 模块初识 .pyc简介 数据类型初识 数据运算 列表.元组操作 字符串操作 字典操作 集合操作 字符编码与转码 一.模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库, ...

  7. 【0728 | 预习】第三篇 Python基础

    第三篇 Python基础预习 Part 1 变量 一.什么是变量? 二.为什么要有变量? 三.定义变量 四.变量的组成 五.变量名的命名规范 六.变量名的两种风格 Part 2 常量 Part 3 P ...

  8. 【python自动化第十一篇】

    [python自动化第十一篇:] 课程简介 gevent协程 select/poll/epoll/异步IO/事件驱动 RabbitMQ队列 上节课回顾 进程: 进程的诞生时为了处理多任务,资源的隔离, ...

  9. Python基础-week03 集合 , 文件操作 和 函数详解

    一.集合及其运算 1.集合的概念 集合是一个无序的,不重复的数据组合,它的主要作用如下 *去重,把一个列表变成集合,就自动去重了 *关系测试,测试两组数据之前的交集.并集.差集.子集.父级.对称差集, ...

随机推荐

  1. Wampserver #1045 无法登录 mysql 服务器

    一是通过phpMyAdmin直接修改: 二是使用WAMP的MySql控制台修改.   第一种: ①在phpMyAdmin界面中点击[用户],将用户概况中的所有用户名为[root]   用户的密码都改为 ...

  2. TCP/IP 协议:IP 协议

    首先来看一下IP协议在实际中的位置: 我们只关系流程,不关系当前具体的服务类型 1.IP协议概述 作用: 从上图或从应用层->运输层->网络层->链路层来看,IP协议属于网络层,也就 ...

  3. window.location和window.open

    window.location和window.open的区别 window.location = "http://www.baidu.com" 跳转后有后退功能 window.lo ...

  4. 关于wcf异常异常信息:由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribut

    异常信息:由于内部错误,服务器无法处理该请求.有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribut ...

  5. httpd启动脚本

    #!/bin/bash # chkconfig: - . /etc/rc.d/init.d/functions if [ -f /etc/sysconfig/httpd ]; then . /etc/ ...

  6. 适配器模式(Adapter Pattern)

    将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 模式中的角色 目标接口(Target):客户所期待的接口.目标可以是具体的或 ...

  7. javaScript DOM JQuery AJAX

    http://www.cnblogs.com/wupeiqi/articles/5369773.html 一 JavaScript JavaScript是一门编程语言,浏览器内置了JavaScript ...

  8. mysql的source命令

    第一次使用 source导入 sql 文件时,死活提示不成功,偶然发现在输入文件所在路径是,必须用 "/"斜杠,而不能是反斜框 "\".

  9. MQTT协议的简单介绍和服务器的安装

    最近公司做的项目中有用到消息推送,经过多方面的筛选之后确定了使用MQTT协议,相对于XMPP,MQTT更加轻量级,并且占用用户很少的带宽. MQTT是IBM推出的一种针对移动终端设备的基于TCP/IP ...

  10. Unity Shader——Writing Surface Shaders(0)

    从今天起,开始翻译Unity关于shader的官方文档.翻译水平比较一般,目的主要是通过翻译来提升对shader的见解,也让其他人更容易的了解shader.以下开始正文内容: 编写Surface Sh ...