Python【集合】、【函数】、【三目运算】、【lambda】、【文件操作】
set集合:
•集合的创建;
set_1 = set() #方法一
set_1 = {''} #方法二
•set是无序,不重复的集合;
set_1 = {'k1','k2','k3'}
set_1.add('k1') #往集合set_1中添加元素
set_1 = {'k1','k2','k3'}
•set也可以直接将字典中的key给过滤出来放在集合中;
dic_1 = {'k1':1,'k2':2}
set_2 = set(a) #将字典a中的键放入集合b中
set_2 = {'k1','k2'}
•集合有如下的操作方法,add、clear、copy、difference、difference_update、discard、intersection、intersection_update、 union、update等
set_1 = {1,2,3,4}
set_2 = {2,3,4,5}
#add,集合中添加元素
set_1.add(5)
set_1 = {1,2,3,4,5}
#clear,清除集合的元素
set_1.clear()
set_1 = set()
#difference,找出两个集合中前一个独有的元素
set_3 = set_1.difference(set_2)
set_3 = {1}
#difference_update,找出两个集合中前一个独有的元素,并且重新赋值给第一个集合
set_1.difference_update(set_2)
set_1 = {1}
#discard,删除集合中的元素
set_1.discard(1)
set_1 = {2,3,4}
#intersection,找出两个集合中的共有元素
set_3 = set_1.intersection(set_2)
set_3 = {2,3,4}
#intersection.update,找出两个集合中的共有元素,并且重新赋值给第一个集合
set_1.intersection_update(set_2)
set_1 = {2,3,4}
#union,将两个集合合并成一个新的集合
set_3 = set_1.union(set_2)
set_3 = {1,2,3,4,5}
#update,更新第一个集合
set_1.update(set_2)
set_1 = {1,2,3,4,5}
#symmetric_difference,取出两个集合的差集
set_3 = set_1.symmetric_difference(set_2)
set_3 = {1,5}
#symmetric_difference_update,取出两个集合的差集,并且重新赋值给第一个集合
set_1.symmetric_difference_update(set_2)
set_1 = {1,5}
#issuperset,判断第一个集合是否为第二个集合的父集,返回True或者False
set_1 = {1,2,3}
set_2 = {2,3}
judge = set_1.issuperset(set_2)
judge = True
#issubset,判断第一个集合是否为第二个集合的子集,返回True或者False
set_1 = {1,2,3}
set_2 = {2,3}
judge = set_2.issubset(set_1)
judge = True
#isdisjoint,判断两个集合是否相交,相交返回False,否则True
set_1 = {1,2,3}
set_2 = {2,3,4}
set_3 = {4,5,6}
judge = set_1.isdisjoint(set_2)
judge = False
judge = set_1.isdisjoint(set_3)
judge = True
•注意:集合set中只能放str,int,tuple,不能放list,dict
函数部分:
•函数式编程和面向对象编程的区别:函数式编程将功能代码封装在函数中,进行其它代码的时候可以调用其功能,无序重复;面向对象对函数进行分类和封装,使其发挥更大的功能
•函数的定义
def main(参数): #def是定义函数的关键字,创建函数名为main的函数,
函数体
...
...
返回值
函数体不执行,只有当函数调用的时候函数体才会执行;
•函数中的参数说明
①普通参数,严格按照顺序,将实际参数赋值给形式参数;
②默认参数,必须放在形式参数列表的最后;
③指定参数,将实际参数赋值给指定的形式参数;
④动态参数,
*,默认将传入的参数全部放在tuple中;
**,全部放在字典中
动态参数*:形式参数前加*,表示可以添加n个参数,将这些参数放在一个tuple中;
形式参数和实数参数前面都加*,一个for循环,将每个元素转换到tuple里面;
形式参数前加**,传字典,用指定参数传值
形式参数和实数参数前面都加**,是一个直接的赋值
⑤万能参数,def fa(*a,**b),一定是*在前,**在后;
#普通参数,实参严格按照书序传递给形参
def send(name,age):
print(name,'is',age)
send('alex','31')
alex is 31 #输出
#默认参数,必须放在形参的末尾
def send(name,age,job='it',): #默认参数必须放在末尾,否则报错
print(name,'is',age,'job is',job)
send('alex','31')
alex is 31 job is it #输出
#指定参数,将实际参数赋值给形式参数
def send(name,age):
print(name,'is',age)
send(age=31,name='alex') #顺序无所谓,指定形参直接赋值
alex is 31 #输出
#动态参数
#第一种,传tuple
def send(*arg): #默认将传入的实参放在tuple中,可以传递n个实参
print(arg)
send('alex',31)
('alex',31) #输出
def send(*arg): #在形参和实参前面同事添加*,表示用for循环每个实参元素到tuple里面
print(arg)
send(*'alex',31,38)
('a','l','e','x',31,38) #输出
#第二种,传dict
def send(**arg): #默认将实参放在地点中,实参需要指定键和值
print(arg)
send(name='alex',age=31)
{'name':'alex','age':31} #输出
def send(**arg): #实参直接传一个字典给形参
print(arg)
dic = {'name':'alex','age':31}
send(**dic)
{'name':'alex','age':31} #输出
#万能参数
def send(*arg,**args): #一定是*在前,**再后
print(arg,args)
dic = {'name':'alex','age':31}
send(31,32,name = 'alex',age = 31)
(31, 32) {'age': 31, 'name': 'alex'} #输出
⑥str.format(*,**)格式化输出,参数传递的是tuple和dict
#第一种,传单个元素
msg = 'i am {0},age is {1}'.format('alex',31)
print(msg)
i am alex,age is 31 #输出
#第二种,传列表
msg = 'i am {0},age is {1}'.format(*['alex',31])
print(msg)
i am alex,age is 31 #输出
#第三种,传指定参数
msg = 'i am {name},age is {age}'.format(name='alex',age=31)
print(msg)
i am alex,age is 31 #输出
#第四种,传字典
msg='i am {name},age is {age}'.format(**{'name':'alex','age':31})
print(msg)
i am alex,age is 31 #输出
•内存回收机制,def f1();def f1()
def f1():
...
def f1():
...
f1() #调用f1函数时只会调用后一个
•注意:在函数传递的时候传递的是一个引用还是重新赋值?是引用!
•全局变量的把握
函数体自身的创建的变量只能自己用;函数体可以使用全局变量;所有作用域都可读,先读自己的,自己的没有再读全局的;
在函数局部中想要修改全局变量,global name,对name重新赋值
特殊:列表字典,可修改不可重新赋值,要重新赋值要用global
注意:定义全局变量一定要大写!
三目运算(三元运算):
对if,else的一个简写
#先判断if与else之间的条件是否成立,如果成立则if前面的表达式成立,不成立则else后面的表达式成立
name = 'alex' if 1 == 1 else 'sb'
print(name)
lambda表达式:只能用一行来表示
f2 = lambda a1: a1 + 100隐藏return
f2:函数名
a1:形参
剩余为函数体
def f1(a1):
return a1 + 100
name = lambda user_name: print(user_name)
name('alex')
#输出
alex
lambda也是一种函数,对于简单的函数可用lambda来表示
•0,None,'',[],(),{}都是False
utf-8 一个汉字三个字节
gbk 一个汉字二个字节
字符串转换字节用bytes,encoding;表现形式是字节,底层是二进制
字节转化为字符串用str
文件操作
•文件操作一般经过如果两种步骤:
打开文件;操作文件
文件句柄 = open('文件路径','模式')
将文件句柄定义为f,当操作完成自己自动关闭
•文件的模式有如下几种
r:只读模式;
w:只写模式,每次会重写文件;
x:只写模式,不存在则创建,存在则报错;
a:追加模式,不存在则创建,存在则追加;
rb:表示对字节操作;
wb:表示对字节操作;
xb:表示对字节操作;
ab:表示对字节操作;
注意:当以字节方式打开文件时,你写入该文件的方式也应该是字节
•方便管理上下文的方法:,为了避免文件打开后忘记关闭;
with open('文件') as f:
pass
seek始终以字节的方式去寻找
tell获取当前指针的位置
Python【集合】、【函数】、【三目运算】、【lambda】、【文件操作】的更多相关文章
- python中实现三目运算
python中没有其他语言中的三元表达式,不过有类似的实现方法 如: a = 1 b =2 k = 3 if a>b else 4 上面的代码就是python中实现三目运算的一个小demo, 如 ...
- 【Python全栈笔记】03 [模块二] 16-17 Oct Set 集合,三目运算
Set 集合 set - unordered collections of unique elements 创建一个set/一个空set # create a new set set1 = {1,2, ...
- python自动化测试之函数(匿名函数lambda和三目运算等(高级用法))
''' 匿名函数: lambda ''' def Add(a,b): print(a+b) Add(2,3) per = lambda a,b:a+b print(per(2,3)) ''' 三目运算 ...
- python 三目运算
python中的三目运算: result = a if condition else b #当满足condition返回a否则返回b 三目运算可以使你的代码看起来简洁,且运算高效
- python函数,lambda表达式,三目运算,列表解析,递归
一.自定义函数 定义函数时,函数体不执行:只有在调用函数时,函数体才执行.函数的结构: 1. def 2. 函数名 3. 函数体 def func_name(): 函数体 4. 返回值 如果没有声明返 ...
- Python学习日记(五)——初识函数(set、深浅拷贝、三目运算、函数、全局变量和局部变量)
基本数据类型补充 set set集合,是一个无序且不重复的元素集合 #创建 s = {11,22,33,44}#类似字典 s = set() #转换 l = (11,22,33,44) s1 = se ...
- python运算符,数据类型,数据类型操作,三目运算,深浅拷贝
算数运算符: Py2中精确除法需要导入:from __future__ import division,(符由特 ,将来的.滴未省,除法) py3不需要导入 赋值运算符: 比较运算符: 成员运算符: ...
- Python—三目运算
Python 可通过 if 语句来实现三目运算的功能,因此可以近似地把这种 if 语句当成三目运算符.作为三目运算符的 if 语句的语法格式如下: (True_statements) if (expr ...
- set集合玩法、三目运算
set是无序的,无法用下标获取值 创建set二种方式 1.第一种 s1=set() #创建一个空的set,看下面就知道为什么要这么创建一个空的集合 2.第二种 s2={11,22,33,44} # ...
随机推荐
- 在springmvc.xml中定义全局的异常处理
在Controller类的内部方法上使用@ExceptionHandler,则此类的方法抛出未处理的异常时,回到此方法上处理. @ExceptionHandler可以指定异常的类型,会自动进行匹配 如 ...
- unicode与编码的关系
参考链接先贴上来:https://blog.csdn.net/humadivinity/article/details/79403625https://www.cnblogs.com/kevin2ch ...
- MySQL中load data infile将文件中的数据批量导入数据库
有时候我们需要将文件中的数据直接导入到数据库中,那么我们就可以使用load data infile,下面具体介绍使用方法. dao中的方法 @Autowired private JdbcTemplat ...
- WPF应用中一种比较完美的权限控制设计方式
如题近段时间 需要在wpf应用中设计一个权限控制 , 简而言之的说 你懂的 对于IT人员来说都知道的 常见的软件功能 首先要有用户 用户,然后用户属于哪个角色 ,然后各个角色都有自己的可供操作的一堆功 ...
- 前端性能优化之 gzip+cache-control
刚刚在Node.js环境下使用gzippo模块进行了测试. 使用gzip的压缩率惊人的好,达到了50%以上. 再加上express的staticCache,配合cache-control max-ag ...
- PHP-Parse 简介以及在 Hyperf 中的应用
介绍 PHP-Parse 是分析 PHP 代码生成 AST 的库,分析出可读性很高的对象数据结构,方便后续的更新和遍历. PHP-Parse 的主要作用是修改原有代码(比如插入自定义的代码片段),生成 ...
- Linux 网络栈 转载
此文章 来自 http://arthurchiao.art/blog/tuning-stack-rx-zh/ [译] Linux 网络栈监控和调优:接收数据(2016) Published ...
- 内核补丁热更新ceph内核模块
前言 内核模块的更新一般需要卸载模块再加载,但是很多时候使用场景决定了无法做卸载的操作,而linux支持了热更新内核模块的功能,这个已经支持了有一段时间了,一直没有拿ceph的相关模块进行验证 准备工 ...
- Python_Tips_dump\load 和 dumps\loads 的区别与联系
dump\load 和 dumps\loads 的区别与联系 """ Python3 JSON模块的使用 参考链接:https://docs.python.org/3/ ...
- 洛谷 P2101 命运石之门的选择 (分治)
P2101 命运石之门的选择 (分治) 介绍 El Psy Congroo 题目链接 没错,作为石头门厨,怎么能不做石头门的题呢?(在搜石头门的时 候搜到了本题) 本题作为一道分治基础练习题还是不错的 ...