一、集合

集合(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. 安全退出,清空Session或Cookie

    概览: 网站中点击退出,如果仅仅是重定向到登录/出页面,此时在浏览器地址栏中输入登录后的某个页面地址如主页,你会发现不用登录就能访问.这种所谓的退出并不是安全的. 那么怎样做到安全退出呢? 那就是点击 ...

  2. Spring(6)—— AOP

    AOP(Aspect-OrientedProgramming)面向切面编程,与OOP完全不同,使用AOP编程系统被分为切面或关注点,而不是OOP中的对象. AOP的引入 在OOP面向对象的使用中,无可 ...

  3. SharePoint 2013 Designer系列之数据视图

    在SharePoint使用中,数据展示是一块很重要的部分,很多时候我们会采用webpart的形式,但是有一些情况,我们不必使用开发,仅需使用Designer即可,下面让我简单介绍下数据视图的使用. 1 ...

  4. MyEclipse 2016 CI 1支持远程WebSphere连接器

    MyEclipse 2016 CI 1有很多Web开发者会喜欢的新功能,包括Live Preview,带有Map支持和hot-swap功能的JavaScript调试.另外还新增支持远程WebSpher ...

  5. MacDown语法教程

    MacDown Hello there! I'm MacDown, the open source Markdown editor for OS X. Let me introduce myself. ...

  6. 【转】JavaScript中的原型和继承

    请在此暂时忘记之前学到的面向对象的一切知识.这里只需要考虑赛车的情况.是的,就是赛车. 最近我正在观看 24 Hours of Le Mans ,这是法国流行的一项赛事.最快的车被称为 Le Mans ...

  7. ORACLE编译失效对象小结

    在日常数据库维护过程中,我们会发现数据库中一些对象(包Package.存储过程Procedure.函数Function.视图View.同义词.....)会失效,呈现无效状态(INVALID).有时候需 ...

  8. Linux 客户端访问 NFS报Permission Denied错误

    在Linux服务器上访问NFS共享目录时,报错:Permission denied. 如下截图所示: 因为这个NFS是系统管理员配置的,我又不了解具体情况,而系统管理员休假中,联系不上.那么我只能先多 ...

  9. SQL SERVER 监控数据文件增长情况

    在项目前期评估数据库的增长情况,然后根据数据库数据量的增长情况来规划存储的分配其实是一件比较麻烦的事情.因为项目没有上线,用什么来评估数据库的数据增长情况呢? 如果手头没有实际的数据,我们只能从表的数 ...

  10. YourSQLDba备份失败案例锦集

    使用YourSQLDba做备份.维护.管理时,偶尔会收到一些备份失败的邮件.导致YourSQLDba备份失败的情况比价多,打算在此篇中对YourSQLDba备份失败的案例做一些总结.整理. 1:You ...