python day three

一、SET集合

set集合是无序的,不重复的。

1.创建


第一种:

s1 = {"123","456"}     #集合用大括号包起来,字符串用逗号隔开

第二种:

li = [11,22,33]

s2 = set(li)

#当执行set()的时候,实际上是调用set的__init__来对li里边的元素做一个for循环,然后转成set。

2.功能


1.s1.add() #增加元素

2.s1.clear() #清空集合内容

3.s1.copy()#浅复制

4.s1.difference  #a中存在,b中不存在

5.s1.symmetric_difference #a中存在,b中不存在拿出来 和 b中存在,a中不存在拿出来(也称对称差级)

6.s1.difference_update #a中存在,b中不存在拿出来,然后重新赋值给左边的变量s1

7.s1.symmetric_difference_update #a中存在,b中不存在拿出来 和 b中存在,a中不存在拿出来,然后重新赋值给左边的变量s1

8.s1.discard #移除特定元素,如果没有元素不报错

9.s1.remove #移动特定元素,如果没有会报错

10.s1.pop #随机移除,把移除的值赋给变量

11.s1.intersection #取两个变量的交集(就是两个变量里边相同的元素)

12.s1.inteersection_update #取两个变量的交集,然后赋值给左边的变量s1

13.s1.isdisjoint #如果有交集,返回True,否则返回False

14.s1.issubset #一个变量是否是另一个变量的子序列

15.s1.union #并集,就是把两个变量的元素联合起来

16.s1.update #批量添加元素,接收一个可迭代的对象,例如:列表、元祖、字符串

3.集合练习题

有两个字典,现在要把新的字典里边的内容添加到旧的字典里,找出

1.应该删除的项

2.应该添加的项

3.应该更新的项

需求分析:

1.首先确定可以用set功能来实现

2.需要把字典的keys读取出来转成set集合

3.找出旧字典应该删除、添加、更新的项


#旧字典

old_dict = {

‘#1‘:8,

‘#2‘:4,

‘#4‘:2,

}

#新字典

new_dict = {

‘#1‘:4,

‘#2‘:4,

‘#3‘:2,

}

old_set = set(old_dict.keys())  #把旧字典keys转换成集合

new_set = set(new_dict.keys())  #把新字典keys转换成集合

remove_set = old_set.difference(new_set)    #找出应该删除的

add_set = new_set.difference(old_set)       #找出应该添加的

update_set = old_set.intersection(new_set)  #找出应该更新的

print(remove_set,add_set,update_set)        #打印找出的删除、添加、更新

输出:

{‘#4‘} {‘#3‘} {‘#1‘, ‘#2‘}

二、函数

函数分为自定义函数和内置函数

1、定义函数


1.函数关键字def

2.函数名

3.写个()

4.函数体(具体内容)

5.返回值

6.自定义的函数自己不被执行

例如:

def aa():

函数体

在PyCharm中可以点击代码左端空白处,可以打断点执行代码,查看代码执行流程。

2、执行函数返回值


函数利用try retrun来实现返回值。

def aa():

try :

函数体

except:

return False #失败返回False

else:

return True #成功返回True

注意:

1.在函数中一旦执行了return,函数的执行过程立即终止,不会再往下走!

2.函数中如果没有指定return,默认python返回一个return值为None

3、函数的基本参数


1.普通参数 #一一对应,严格按照顺序执行,将实际参数赋值给行为参数;

2.默认参数 #当函数执行的时候没有给变量赋值的时候,使用默认参数;设置默认参数的行为参数要放到最后,可以连着多个;

3.指定参数 #给指定的参数赋值

(函数冒号左边括号里边的叫做行为参数;执行函数的时候,括号里边的参数叫做实际参数。)

4、函数的动态参数


1.行为参数之前加一个* 就可以接受多个实际参数(接收迭代参数列表、元组、字符串,不接收字典)输出格式为元祖,按顺序处理。

def f1(*args):

print ("abc","123")

例一:当实际参数前不加*时,函数会把迭代参数整体作为一个元素放到元祖里。

def f1(*args):

print (args)

li = [11,22]

f1(li)

输出:([11,22])

例二:当实际参数前也加一个*时,函数会对迭代参数里边的所有元做一个for循环,然后赋值到元祖里;

def f1(*args):

print (args)

li = [11,22]

f1(*li)

输出:(11,22)

2.行为参数之前加两个* 就可以接受字典参数,输出格式为字典,处理key、values键值对

def f1(**args):

print (args)

f1(‘n1‘=‘aaa‘,‘n2‘=‘ddd‘)

输出:{‘n1‘:‘aaa‘,‘n2‘:‘ddd‘}

3.万能参数(就是*args和**kwargs一起使用,它会自动识别是列表还是字典,然后赋值给*args和**kwargs)

5、利用动态函数实现format功能


格式:str.format

功能:实现格式化输出方法(同万能参数功能,都是通过*args和**kwargs)

例如:s = "i am {0},age{}".format(‘abc‘,‘123‘)  (括号里边的abc和123也可以写成一个列表)

s = "i am {0},age{}".format(*[‘abc‘,‘123‘])

输出:i am abc,age 123

6、函数内容补充


例一:

def f1(a1,a2):

return a1+a2

def f1(a1,a2):          #当运行到这里的时候f1已经重新赋值,内存段也不一样了,

return a1*a2

result = f1(8*8)

print (result)          #所以结果是64


例二:

python函数中,当传递参数的时候,python默认为引用参数,不是重新复制参数赋值。

def f1(a1):

a1.append(111)

li= [11,22]

f1(li)             #这里的li为引用,不是重新赋值

print (li)         #结果为[11,22,999]

7、全局变量


1.作用域内的变量只能作用域内使用;

2.全局变量所有作用域都可以读取,但不能修改;

3.局部变量优先于全局变量;

4.作用域要修改变量,需要在作用域中加global+变量名;

5.如果全局变量是列表或者字典时,作用域不加global可直接添加元素,但不能重新赋值;如果重新赋值,要加global+变量名;

(注意:所有全局变量名要都用大写,方便区分)

8、函数式编程实现登录和注册

三、三元运算(也称三目运算,if else的简写)


用来简单的if else的运用;

例如:

常规的写法:

if 1 == 1:

name = ‘aaa‘

else:

name = ‘bbb‘

三元运算写法:

name = ‘aaa‘ if 1 == 1 else ‘bbb‘

四、lambda表达式


用作简单函数的简写,对简单的函数赋值做操作,只能写一行。

例如:

def f1(a):

return a+100

lambda写法:

f1 = lambda 1: a+100    #return默认隐含了

五、内置函数


1. .abs()  #取绝对值

2. .all()  #接收可以被迭代的对象。当括号里所有为真时,为真;括号里只有一个为假时,就为假。

3. .any()  #括号里只要有真,就为真。

4. .ascii()  #自动执行某对象的的__str__方式

5. .bin()  #接收十进制,然后转成二进制 0b代表二进制

6. .oct()  #接收十进制,然后转成八进制 0o代表八进制

7. .nex()  #接收十进制,然后转成十六进制 0x代表十六进制

8. .bool() #真或假、True或False

9. .bytes()     #把字符串转成字节类型 例如:bytes(s,encoding"utf-8")

10. .bytearry() #把字符串转成字节类型,放到一个列表里。

五、文件操作


1.打开文件

f = open (‘文件名字‘,‘什么方式‘)

打开文件的方式有:

1.r 只读

2.w 只写(清空之后再写)

3.x (如果文件存在,就报错;如果不存在,就创建再写内容)

4.a 追加  永远是追加到光标所在位置的最后

5.r+  读写

6.w+  先清空再写读

7.a+  读写,但是永远是追加到最后

8.x+  读写

9.b 以二进制的方式读写

10.b+

2.操作文件(文件操作功能)

1.read()

2.tell()

3.seek()

4.write()

5.close()

6.flush()

7.readable()

8.seekable()

9.readline()

10.readlines()

11.truncate()

12.for循环文件对象

例如;

f = open("aaa.txt",‘r=‘)

for line in f:   #会把f里边的一行一行读取出来赋值给line

print (line)

3.with 同时打开多个文件

with open("db1",‘r‘,encoding="utf-8") as f1 ,open(‘db2‘,‘w‘,encoding="utf-8")as f2:

例一:同时打开两个文件,读取第一个文件,同时写入第二个文件,当写到10行时退出;

with open("db1",‘r‘,encoding="utf-8") as f1 ,open(‘db2‘,‘w‘,encoding="utf-8")as f2:

times = 0

for line in f1:

times += 1

if times <= 10:

f2.write(line)

else:

break

例二:当有个文件,把文件里边的aaa改成bbb

with open("db1",‘r‘,encoding="utf-8") as f1 ,open(‘db2‘,‘w‘,encoding="utf-8")as f2:

for line in f1:

new_str = line.replace(‘aaa‘,‘bbb‘)

f2.write(new_str)

时间: 2024-10-14 06:55:03

python day three的相关文章

Python学习1-Python和Pycharm的下载与安装

本文主要介绍Python的下载安装和Python编辑器Pycharm的下载与安装. 一.Python的下载与安装 1.下载 到Python官网上下载Python的安装文件,进入网站后显示如下图: 网速访问慢的话可直接在这里下载:python-2.7.11.amd64 在Downloads中有对应的支持的平台,这里我们是在Windows平台下运行,所以点击Windows,出现如下: 在这里显示了Python更新的所有版本,其中最上面两行分别是Python2.X和Python3.X对应的最后更新版本

Python——深入理解urllib、urllib2及requests(requests不建议使用?)

深入理解urllib.urllib2及requests            python Python 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)协议[1] .Python语法简洁而清晰,具有丰富和强大的类库. urllib and urllib2 区别 urllib和urllib2模块都做与请求URL相关的操作,但

python学习_day26_面向对象之封装

1.私有属性 (1)动态属性 在python中用双下划线开头的方式将属性隐藏起来.类中所有双下划线开头的名称,如__x都会自动变形成:_类名__x的形式.这种自动变形的特点是: a.类中定义的__x只能在内部使用,如self.__x,引用的就是变形的结果.b.这种变形其实正是针对外部的变形,在外部是无法通过__x这个名字访问到的.c.在子类定义的__x不会覆盖在父类定义的__x,因为子类中变形成了:_子类名__x,而父类中变形成了:_父类名__x,即双下滑线开头的属性在继承给子类时,子类是无法覆

python面向对象知识点疏理

面向对象技术简介 类: 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例.class 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之外.类变量通常不作为实例变量使用. 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据. 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖,也称为方法的重写. 实例变量:定义在方法中的变量,只作用于当前实例的类. 继承:即一个派生类(de

python实现网页登录时的rsa加密流程

对某些网站的登录包进行抓包时发现,客户端对用户名进行了加密,然后传给服务器进行校验. 使用chrome调试功能断点调试,发现网站用javascript对用户名做了rsa加密. 为了实现网站的自动登录,需要模拟这个加密过程. 网上搜了下关于rsa加密的最简明的解释: rsa加密是非对称加密算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥.公钥是可发布的供任何人使用,私钥则为自己

Python中编码的详细讲解

看这篇文章前,你应该已经知道了为什么有编码,以及编码的种类情况 ASCII 占1个字节,只支持英文 GB2312 占2个字节,支持6700+汉字 GBK GB2312的升级版,支持21000+汉字 Shift-JIS 日本字符 ks_c_5601-1987 韩国编码 TIS-620 泰国编码 由于每个国家都有自己的字符,所以其对应关系也涵盖了自己国家的字符,但是以上编码都存在局限性,即:仅涵盖本国字符,无其他国家字符的对应关系.应运而生出现了万国码,他涵盖了全球所有的文字和二进制的对应关系, U

Python练习(一)

Python练习(一): 给一个不超过5位的正整数,判断其有几位,依次打印出个位.十位.百位.千位.万位的数字: num = int(input('please enter a number: '))   lst = [] for i in str(num):      lst.append(i) lenlst = len(lst) if num >= 1000:      if num >= 10000:          print('too big')     else:        

菜鸟学python之对象类型及运算

Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型. 等号(=)用来给变量赋值. 1 变量赋值 1.1 单个变量赋值 >>> name="python" >>> print(name) python 1.2 多个变量赋值 >>> name=names="python&

开始我的Python爬虫学习之路

因为工作需要经常收集一些数据,我就想通过学爬虫来实现自动化完成比较重复的任务. 目前我Python的状况,跟着敲了几个教程,也算是懂点基础,具体比较深入的知识,是打算从做项目中慢慢去了解学习. 我是觉得如果一开始就钻细节的话,是很容易受到打击而放弃的,做点小项目让自己获得点成就感路才更容易更有信心走下去. 反正遇到不懂的就多查多问就对了. 知乎上看了很多关于入门Python爬虫的问答,给自己总结出了大概的学习方向. 基础: HTML&CSS,JOSN,HTTP协议(这些要了解,不太需要精通) R

解决:Elipse配置Jython Interpreters时报错Error: Python stdlib source files not found

今天学习lynnLi的博客monkeyrunner之eclipse中运行monkeyrunner脚本之环境搭建(四)时,遇到了一个问题,即: lynnLi给出的解决办法是:将Python下的Lib拷贝到sdk中jython-standalone-2.5.3.jar所在目录tools\lib,再次New一个Jython,添加jython-standalone-2.5.3.jar路径即可 但是这样尝试,又报错了: 后来借鉴了这篇文章的做法,成功配置Jython Interpreters: 将\sdk