一、集合

集合(set)是一个无序的、不重复的元素组合,它的主要作用如下:

  • 去重:把一个列表变成集合,就会自动去重。
  • 关系测试:测试两组数据之前的交集、差集、并集等关系。

常用操作

# 创建数值集合
list_1 = set([1,2,3,4,5])
list_2 = set([5,6,7,8,9])
list_3 = set([1,2,3]) # 常用操作:
# 1.交集(两个集合相同的部分)
list_1.intersection(list_2) # 方法1
list_1 & list_2 # 方法2
# 2.并集(合并两个列表,并去重)
list_1.union(list_2) # 方法1
list_1 | list_2 # 方法2
# 3.差集(list1中有list2中没有的部分)
list_1.difference(list_2) # 方法1
list_1 - list_2 # 方法2
# 4.对称差集(取出两个列表中互不相同的部分)
list_1.symmetric_difference(list_2) # 方法1
list_1 ^ list_2 # 方法2
# 5.子集
list_3.issubset(list_1) # 方法1
list_3 <= list_1 # 方法2
# 6.父集
list_1.issuperset(list_3) # 方法1
list_1 >= list_3 # 方法2
# 7.是否有交集
list_3.isdisjoint(list_1) # True or False # 增删改查
# 1.添加
list_1.add('999') # 添加1个元素
list_1.update([888,777,666]) # 添加多个元素
# 2.删除
list_1.remove('3') # 从集合中移除一个元素,没有此元素时,raise KeyError
list_1.discard('4') # 移除集合里的一个元素,如果给的参数不是集合里的元素,则什么都不做
list_1.pop() # 随机删除并显示已删除的项
list_1.clear() # 移除集合内的所有元素
# 3.浅复制
list_1.copy() # 返回list_1的一个浅复制
# 4.包含
1 in list_1 # 测试1是否是list_1的成员
9 not in list_1 # 测试9是否不是list_1的成员
# 其他
len(list_1) # list_1的长度

二、编码转换

想了解更详细请点击这里

Python3中的编码转换

Python3中默认是Unicode编码

#!/usr/bin/env python
#-*- coding:utf-8 -*- name = "周杰伦"
# 转为UTF-8编码
print(name.encode('UTF-8'))
# 转为GBK编码
print(name.encode('GBK'))
# 转为GB2312
print(name.encode('GB2312'))

Python2中的编码转换

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

#!/usr/bin/env python
#-*- coding:utf-8 -*- import sys
print(sys.getdefaultencoding()) msg = "周杰伦"
msg_gb2312 = msg.decode("utf-8").encode("gb2312")
gb2312_to_gbk = msg_gb2312.decode("gbk").encode("gbk") print(msg)
print(msg_gb2312)
print(gb2312_to_gbk)

三、文件操作

对文件操作的流程:

  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件

文件句柄 = 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

open文件操作演示

f = open('data.txt', 'r', encoding='utf-8')
print(f.tell())
# 按照字符读
f.read(2)
# tell()返回的是根据字节得到的位置
print(f.tell())
# seek()指定当前指针位置,seek()用的是字节
# 由于有中文,所以把指针指向1,就会报错,因为一个中文包括三个字节
# f.seek(1)
# print(f.read()) # truncate():把当前指针位置之前的数据保留下来,舍去后面的(需用a+模式)
f.close()

with语句

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

with open('data','r') as f:
...

如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。

在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:

with open('data1') as obj1, open('data2') as obj2:

    pass

四、函数

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

def 函数名(参数):

    ...
函数体
...

函数的定义主要有如下要点:

  • def:表示函数的关键字
  • 函数名:函数的名称,日后根据函数名调用函数
  • 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
  • 参数:为函数体提供数据
  • 返回值:当函数执行完毕后,可以给调用者返回数据。

语法定义

def test1():
print("Hello test1") test1() #调用函数

含有参数的函数

def test2(a,b):
res = a**b
return res #返回函数执行结果 c = test2(5,6)
print(c)

返回值

函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。

注意:

  1. 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,return 语句代表着函数的结束
  2. 如果未在函数中指定return,那这个函数的返回值为None

函数参数与局部变量

  • 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
  • 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值
# 定义函数
def list(name): # name叫做函数list的形式参数,简称:形参。
print(name) # 执行函数
list('zhubajie') # 'zhubajie'叫做函数list的实际参数,简称:实参。

默认参数

def list(name,age = 18):
print(%s:%s % (name,age)) # 指定参数执行函数
list('zhubajie',99)
# 使用默认参数执行函数
list('zhubajie')
# 注:默认参数需要放在参数列表最后

动态参数1:

# *args 会把多传入的参数变成一个元组形式

def func(*args):

    print args

# 执行方式一
func(11,33,4,4454,5) # 执行方式二
li = [11,2,2,3,3,4,54]
func(*li)

动态参数2:

# *kwargs 会把多传入的参数变成一个字典形式

def func(**kwargs):

    print args

# 执行方式一
func(name='wupeiqi',age=18) # 执行方式二
li = {'name':'wupeiqi', age:18, 'gender':'male'}
func(**li)

动态参数3:

# 多种动态参数可共用

def func(name,*args, **kwargs):

    print name
print args
print kwargs

局部变量

全局与局部变量:

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

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

name = "外国"

def change_name(name):
print("before change:",name)
name = "内地"
print("after change:", name) change_name(name) print("在外面看看name改了么?",name)

输出

before change: 外国
after change:内地
在外面看看name改了么? 外国

递归

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

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. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

匿名函数(lambda表达式)

学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即:

# 普通条件语句
if a == 1:
name = 'zhubajie'
else:
name = 'sunwukong' # 三元运算
name = 'zhubajie' if a == 1 else 'sunwukong'

对于简单的函数,也存在一种简便的表达方式,即:lambda表达式

# ###################### 普通函数 ######################
# 定义函数(普通方式)
def func(arg):
return arg + 1 # 执行函数
result = func(123) # ###################### lambda ###################### # 定义函数(lambda表达式)
my_lambda = lambda arg : arg + 1 # 执行函数
result = my_lambda(123)

lambda存在意义就是对简单函数的简洁表示。

高阶函数

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

def add(x,y,f):
return f(x) + f(y) res = add(3,-6,abs) print(res)

Python-03-基础的更多相关文章

  1. Python编程语言基础

    今天给大家讲解python语言基础~~ 01.python核心数据类型   整型数 int:整数是不带有小数部分的数字 浮点型数 float:浮点数是带有小数部分的数字(小数部分可以是0) 复数 co ...

  2. Python 语言基础

    Python 语言基础 Python 开发环境 计算机组成 编程语言(计算机语言)是人们为了控制计算机,而设计的一种符号和文字的组合,从而实现向计算机发出指令. 形式是符号和文字的组合 目的是为了控制 ...

  3. Python实验报告——第2章 Python语言基础

    实验报告 [实验目的] 1.熟悉在线编程平台. 2.掌握基本的 python 程序编写.编译与运行程序的方法. [实验条件] 1.PC机或者远程编程环境 [实验内容] 1.完成第二章实例01-07,实 ...

  4. Python文件基础

    ===========Python文件基础========= 写,先写在了IO buffer了,所以要及时保存 关闭.关闭会自动保存. file.close() 读取全部文件内容用read,读取一行用 ...

  5. 3.Python编程语言基础技术框架

    3.Python编程语言基础技术框架 3.1查看数据项数据类型 type(name) 3.2查看数据项数据id id(name) 3.3对象引用 备注Python将所有数据存为内存对象 Python中 ...

  6. Python爬虫基础

    前言 Python非常适合用来开发网页爬虫,理由如下: 1.抓取网页本身的接口 相比与其他静态编程语言,如java,c#,c++,python抓取网页文档的接口更简洁:相比其他动态脚本语言,如perl ...

  7. 小白必看Python视频基础教程

    Python的排名从去年开始就借助人工智能持续上升,现在它已经成为了第一名.Python的火热,也带动了工程师们的就业热.可能你也想通过学习加入这个炙手可热的行业,可以看看Python视频基础教程,小 ...

  8. Python爬虫基础之requests

    一.随时随地爬取一个网页下来 怎么爬取网页?对网站开发了解的都知道,浏览器访问Url向服务器发送请求,服务器响应浏览器请求并返回一堆HTML信息,其中包括html标签,css样式,js脚本等.我们之前 ...

  9. 零基础学Python--------第2章 Python语言基础

    第2章  Python语言基础 2.1 Python语法特点 2.11注释 在Python中,通常包括3种类型的注释,分别是单行注释.多行注释和中文编码声明注释. 1.单行注释 在Python中,使用 ...

  10. Python学习基础笔记(全)

    换博客了,还是csdn好一些. Python学习基础笔记 1.Python学习-linux下Python3的安装 2.Python学习-数据类型.运算符.条件语句 3.Python学习-循环语句 4. ...

随机推荐

  1. Ubuntun CentOS的ISO官方MD5在哪里查看(安装虚拟电脑时出现严重错误的解决方法)

    近日在VirtualBox虚拟机上安装Linux,然后果断的选择了Ubuntu.当我新建虚拟机,一切配置完成之后,启动虚拟机,还没开始安装就提示虚拟电脑出现严重错误,需要关闭.起初以为是配置错了,上网 ...

  2. struts拓展restful

    为restful开发的话,一定要设计到URL,struts正好是管理URL的 所以在struts的项目中用restful,要遵守struts的规则 rest在struts中对应的方法 上面是官方给出的 ...

  3. 玩转 H5 下拉上滑动效果

    在APP中我们经常会在页面下拉时看到一些动效,例如下拉图片跟随放大.下拉刷新出现loading动画等,这个交互细节在各个主流APP以及手机原生系统中随处可见,能为APP增添个性亮点. 一.背景 在我们 ...

  4. PresentViewController切换界面

    视图切换,没有NavigationController的情况下,一般会使用presentViewController来切换视图并携带切换时的动画, 其中切换方法如下: – presentViewCon ...

  5. 开发环境(Atom + NotePad++)

    1.NodeJS Gulp:前端构建工具Grunt:前端构建工具Bower:客户端依赖管理工具Karma: 单元测试Protractor: 集成测试Git:版本控制ngScenario:情景测试(sc ...

  6. Intent(一.显示使用intent)

    大家都知道如果手机只有一个活动的应用,那这个应用也太简单了吧.如同网页一下,是有多个组成的,在C#中我们可以使用各程skip控件或代码,这里不再赘述.那么我们还是在当前的项目中创建一个名为Second ...

  7. Android工程师常见面试题集

    本文汇总了朋友同事在面试过程中被经常问道的一些问题,讲解不详细,有需要特别了解的可以留言告诉我.持续更新中…… 1.接口回调机制 ①定义一个接口,定义接口中的方法: ②在数据产生的地方持有接口,并提供 ...

  8. 遇到别人留下的storyboard的,你需要一个引导图,但是不知道怎么跳转.

    首先在AppDeledate.m文件里是这样. { self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds] ...

  9. Starling中通过PivotX 和 PivotY 修改原点

    一个显示对象的默认原点在左上角.addChild 是将它的左上角放在了父容器的(0, 0)位置. 如果将该显示对象的PivotX 和 PivotY 修改为其宽高的一半,那么它的原点就变到了该对象的中心 ...

  10. CSS3 text-shadow

    <!DOCTYPE html > <html > <head> <meta charset="utf-8"> <title&g ...