Python基础学习(第三周)
集合的操作
集合是一个无序的,不重复的数据组合,它的主要作用如下:
去重,把一个列表变成集合,就自动去重了
关系测试,测试两组数据之间的交集,差集,并集等关系
集合的写法
list_1 = set([1, 3, 4, 6, 7, 12, 5])
集合的关系
list_1 = set([1, 3, 5, 7, 4, 9, 10])
list_2 = set([1, 8, 10, 15, 12])
集合的交集
print(list_1.intersection(list_2)) 等价于 print(list_1 & list_2)
--->{1, 10}
集合的并集
print(list_1.union(list_2)) 等价于 print(list_1 | list_2)
-->{1, 3, 5, 7, 8, 4, 9, 10, 15, 12}
集合的差集
print(list_1.difference(list_2)) 等价于 print(list_1 - list_2)
-->{3, 5, 7, 4, 9}
集合的子集
print(list_1.issubset(list_2))
list_1是否是list_2的子集
集合的父集
print(list_1.issuprset(list_2))
list_1是否是list_2的父集
集合的对称差集
print(list_1.symmetric_difference(list_2)) 等价于 list_1 ^ list_2
-->{3, 5, 7, 4, 9, 8, 15, 12}
集合的其他函数用法
list_2.isdisjoint(list_3) #两个无交集返回true
list_1.add(4) #集合的添加
list_1.remove(4) #集合的删除,注意当集合中没有该元素会报错所以我们更多用下这个删除
list_1,discard(4) #删除,没有该元素则什么都不操作
文件的操作
文件的操作流程
1.打开文件,得到文件句柄并赋给变量一个值
2.通过句柄对文件进行操作
3.关闭文件
f = open("guangzhou", "r", encoding = "utf-8") #文件句柄
data = f.read() #f.readline()读取一行
f.close()
这样就把整个文件给读出来了,假如read()两遍,那么第二个read()会读出空的内容,因为当第一个read()执行完成后,这个时候光标位置就处在文件的结束位置,再进行读取的时候也就读不到内容了。
文件的操作模式
r:读模式,默认是读模式
open("guangzhou", "r", encoding = "utf-8")
w:写模式,打开文件时时创建一个文件,也就是原来的文件没有了
open("guangzhou", "w", encoding = "utf-8")
a:追加模式
open("guangzhou", "a", encoding = "utf-8") 只是不覆盖文件,在文件的后面追加内容,这个模式还不支持读read
r+:读写模式,以读和追加的方式来读写,不管光标位置在哪,都在最后面写
w+:写读模式,只能在最后面写,不能写到中间,这是硬盘机制
a+:追加读
rb:二进制读,用途网路传输,读取音频视频文件
wb:二进制写
文件从一个文件读取并改变内容保存到另外一个文件
f = open("guangzhou", "r", encoding = "utf-8")
f_new = open("guanghzou3", "w", encoding = "utf-8")
#循环读取文件,且这种效率最高,比readlines()高好多
for line in f:
if "人在广东已经漂泊十年" in line:
line = line.replace("人在广东已经漂泊十年", "Jason在广东已经漂泊两年")
f_new.write(line)
f.close()
f_new.close()
文件的其他方法
f = open("guangzhou", "r", encoding = "utf-8")
f.tell() #返回光标的位置,该返回的位置是字符的位置
f.seek(0) #回到某个光标位置
flush方法
当我们在以写文件的方式打开一个文件的时候,我们执行完一条语句write并不一定写到了硬盘上,它是先存到了内存中,当内存达到一定大小的时候才开始往硬盘上面写,这是因为内存的写速度要比硬盘快的多,但是当某些特定条件下需要实时刷新的话,我们就要用flush进行强制刷新,比如进度条,下面的例子:
import sys, time
for i in range(20):
sys.stdout.write("*")
sys.stdout.flush()
time.sleep(0.1)
自己可以执行下看一下
with语句
为了避免文件打开后忘记关闭,可以通过管理上下文,即:
with open("guangzhou", "r") as f:
2.7版本之后也支持同时对多个文件管理,即:
with open("guangzhou", "r") as f, open("guangzhou2", "r") as f2:
字符编码与转码
字符集发展史
中国字符集发展:gb2312--->gb18030-->gbk
国际字符集发展:ascii(英文占用一个字节,不能存中文)-->unicode(英中占用两个字节)-->utf-8(中文占用3个字节,英文一个字节)

函数与函数式编程
函数的定义方法
def text(x):
"The function definitions"
x += 1
return x
函数可以返回多个值,用元组来返回,比如return 1, 3, “hello”, ["a", "b", "c"], {”name”:"Jason"} 返回其实是(1, 3, “hello”, ["a", "b", "c"], {”name”:"Jason"})
函数增加参数
def text(x,y):
print(x,y)
调用方式:
1.text(1, 2) -->1,2 位置参数调用
2.text(x = 2,y = 1) -->2,1 关键字参数调用
3.text(2, y = 1) -->2 , 1
4. x = 1,
y = 2
text(x, y) -->1, 2
5.text(1, x = 2) 报错,x得到了多个值
6.text(x = 2, 1)报错
综上所述,当既有位置参数又有关键字参数的时候,关键参数的后面不能有位置参数,且不能给多个参数赋值
函数的默认参数
1.参数固定
def text(x, y = 2):
print(x,y)
2.参数不固定,接受N个位置参数输出用元组
def text(*args):
print(args)
text(1, 2, 3, 4, 6)或者text(*[1, 2, 3, 4, 6])
-->(1, 2, 3, 4, 6) 元组
3.接受N个关键字参数输出字典方式
def text(**kwargs):
print(kwargs)
text(name = "Jason", age = 24) -->{‘name’:'Jason', 'age':24}
这些参数可以混合使用,比如:
def text(name, *args, **kwargs):
print(name)
print(args)
print(kwargs)
text(“Jason”, 1, 2, 5, name = "Jason", age = 24)
-->Jason
(1, 2, 5)
{'name':"Jason", 'age':24}
函数局部变量与全局变量
在子程序中定义的变量为局部变量,在程序的一开始定的变量为全局变量,全局变量作用域整个程序,局部变量作用域定义该变量的子程序,当全局变量与局部变量同名时,在定义局部变量的子程序中,局部变量起作用,在其他地方全局变量起作用。
在子程序中,变量字符串对全局变量的改变对外面没影响,但是,当全局变量为列表字典集合的时候,这个时候改变会影响整个程序的
高阶函数
变量可以指向函数,函数的参数能接受变量,那么一个函数就可以就收另一个函数作为参数,这种函数称之为高阶函数。
Python基础学习(第三周)的更多相关文章
- Python基础学习篇章三
一. Python对象类型 1. 对象是Python最基本的概念,一个Python程序可以分解为模块.语句.表达式.和对象.它们的关系如下:(1)程序由模块构成 (2)模块包含语句 (3)语句包含表达 ...
- Python基础学习(三)
了解了Python的基础使用,接下来继续练手廖雪峰老师的教学案例. 一.变量可以指向函数 说明,一个函数可以赋值给一个变量,该变量就会具有该函数的功能,举例: gg = abs print( gg(- ...
- python基础学习(三)变量和类型
变量的作用:变量就是用来存储数据的. 变量的定义 在python中,变量在使用之前需要进行赋值,变量只有赋值后才能使用,如果变量没有赋值就使用会出现什么情况呢?如下图,使用之前变量未定义,会报错,如下 ...
- Python基础学习总结(三)
4.if语句 If语句可以检查判定当前条件,并执行相应措施. if a in A: if a 条件: 执行命令1 4 else: 执行命令2 if判断条件还可以简写 if x: print('True ...
- python基础学习第三天
#变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间#基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中#变量可以指定不同的数据类型,这些变量可以存储整数.小数 ...
- Python基础学习三
Python基础学习三 1.列表与元组 len()函数:可以获取列表的元素个数. append()函数:用于在列表的最后添加元素. sort()函数:用于排序元素 insert()函数:用于在指定位置 ...
- Python 基础学习 总结篇
Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...
- Day1 Python基础学习
一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...
- Day1 Python基础学习——概述、基本数据类型、流程控制
一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...
- Python基础学习二
Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...
随机推荐
- vue内置指令详解——小白速会
指令 (Directives) 是带有 v- 前缀的特殊属性,职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM. 内置指令 1.v-bind:响应并更新DOM特性:例如:v-bi ...
- JSONP 详解
1.什么是JSONP ? JSONP(JSON with Padding)是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实 ...
- Mysql-5.7.21安装配置
搞开发多年,其实MySql前前后后安装配置了无数次,但是每次都需要到网上搜教程,折腾半天才搞定,这次索性把整个过程全部记录下来,以便以后查阅. 下载 到MySql官网,导航找到DOWNLOADS> ...
- python 内置函数之lambda-filter-reduce-apply-map
(1)lambda lambda是Python中一个很有用的语法,它允许你快速定义单行最小函数.类似于C语言中的宏,可以用在任何需要函数的地方. 基本语法如下: 函数名 = lambda args1, ...
- Python内置函数(42)——hash
英文文档: hash(object)Return the hash value of the object (if it has one). Hash values are integers. The ...
- Python Tornado初学笔记之表单与模板(一)
Tornado中的表单和HTML5中的表单具有相同的用途,同样是用于内容的填写.只是不同的是Tornado中的表单需要传入到后台,然后通过后台进行对模板填充. 模板:是一个允许嵌入Python代码片段 ...
- wordpress | WP Mail SMTP使用QQ邮箱发布失败的解决办法
在使用contact form 7插件时遇到邮件发送失败的问题,经过检查发现是因为服务器不支持mail()函数,判断是否支持mail()函数可以参考http://www.diyzhan.com/201 ...
- Java 10 的 10 个新特性,将彻底改变你写代码的方式!
Java 9才发布几个月,很多玩意都没整明白,现在Java 10又快要来了.. 这时候我真尼玛想说:线上用的JDK 7 甚至JDK 6,JDK 8 还没用熟,JDK 9 才发布不久不知道啥玩意,JDK ...
- android- 远程调试
最近由于要在另外一台android设备上调试代码,在本机PC上查看其log.两台机器离的比较远, 无法用usb直接连接,于是在网上找了很多资料,最找使用adb connect方法解决了该问题.解决过程 ...
- Python实现简单的三级菜单
话不多说,直奔代码 # 要处理的字典 dic1 = { '北京': { '东城': { '沙河': ['沙河机场', '链家'], '天通苑': ['北方明珠', '天通尾货'] }, '朝阳': { ...