Python:Day14 集合、函数
浅copy只copy一层
深copy相当于克隆一份
深copy要引入copy,具体如下:
import copy
wife = copy.copy() #此为浅copy,括号中要加copy的对象,相当于xx.copy()
xiaosan = copy.deepcopy() #此为深copy,括号内为要copy的对象
集合(set)
集合(set):把不同的元素组在一起形成集合,是python基本的数据类型。
集合元素:组成集合的成员(不可重复)
创建列表两种方式:
a = [ 1,3,4 ]
b = list( [1,3,4] ) #最里面一个括号是小括号,中括号,大括号都行,只要里面是个序列就行
创建元组的两种方式:
a = (1,3,4)
b = tuple( [1,3,4] )
set只有一种创建方式:
s = set('alex li')
s = frozenset('alex li')
set是无序的,无序意味着没有索引且不能做切片操作,字典虽然也是无序的,但是可以通过键来取值,那怎么取,两种方法:for遍历;迭代器;可以使用in、not in来访问或判断集合元素
set两大特点:无序、唯一
可哈希可以理解为不可变类型
集合对象(集合中的每一个元素)是一组无序排列的可哈希的值:集合成员可以做字典的键(? 因为成员必须是可哈希的,也就是不可变类型,所以可以做字典的键)
集合分类:可变集合(set)、不可变集合(frozenset)
可变集合:可添加和删除元素,非可哈希,不能用作字典的键,也不能做其它集合的元素
集合内置方法:
s.add('uu') #添加一个元素
s.update('ops') #将括号中的对象当成一个序列,将序列中的每个元素分别添加到集合
s.update( [12,'eee'] ) #update添加多少元素
s.remove('alex') #删除括号内指定元素
s.pop() #随机删除一个元素
s.clear() #清空集合中所有元素,由于没有自己的表达形式,所以返回set()
del s #删除集合
集合类型操作符
1、in , not in
2、集合等价与不等价(= , != ) #set('alex') == set('alexexex')
3、子集、超集 # set('alex’).issuperset('alexw') 或 set('alex') > set('alexw') / a.issubset(b) 或 a < b
4、交集 # a.intersection(b) 或 a & b
5、并集 # a.union(b) 或 a | b
6、差集 # a.difference(b) 或 a - b / b.difference(a) 或 b - a
7、对称差集(反向交集) # a.symmetric_difference(b) 或 a ^ b
函数作用:
1、减少重复代码
2、方便修改,更易扩展
3、保持代码一致性
创建函数:
def 函数名字():
函数体
调用函数:
函数名字() #调用一定记得加括号
函数命名规则:和变量命名规则一样
函数的参数:函数参数放的位置是有讲究的,必须参数放最左边,然后默认参数,无命名不定长参数,有命名不定长参数
1、必需参数:必需参数须以正确的顺序传入函数,调用时的数量必须和声明的一样
2、关键字参数
3、默认参数
4、不定长参数
def print_info(name,age):
print('Name:%s'%name)
print('Age:%d'%age) print_info('xiaohu',30) #必需参数
print_info(age=30,name='xiaohu') #关键字参数
def print_info(name,age,sex='male'): #默认参数
print('Name:%s'%name)
print('Age:%d'%age)
print('Sex:%s'%sex) print_info('xiaohu',28)
def add(*args): #无命名不定长参数
print(args) #args是一个元组
sum = 0
for i in args:
sum += i
print(sum)
add(1,2,3,4) def print_info(**kwargs): #有命名不定长参数
for i in kwargs: #kwargs是一个字典
print('%s:%s'%(i,kwargs[i]))
print_info(job='IT',hobby='girls',heighit=188) #注意括号中的是键值对,但是用的是等号,而不是字典的冒号 def f(*args,**kwargs): #无命名必须要放左面,有命名必须要放右面,在输入实参的时候也要按照这个顺序,如果有默认参数,要放在不定长参数的左边
pass
return:
作用:
1、结束一个函数
2、返回某个值
注意点:
1、函数里如果没有return,会默认返回一个None
2、如果return多个对象,那么python会帮我们把多个对象封装成一个元组返回
作用域:
LEGB:L = local E = encolsing G = global B = built in
1、变量查找顺序:LEGB,作用域局部》外层作用域》当前模块中的全局》python内置作用域
2、只有模块、类、及函数才能引入新作用域
3、对于一个变量,内部作用域先声明就会覆盖外部变量,不声明直接使用,就会使用外部作用域的变量
4、内部作用域要修改域变量的值时,全局变量要使用global关键字嵌套作用域变量要使用nonlocal关键字,nonlocal是python3新增的关键字,有了这个关键字,就能完美的实现闭包了。
Python:Day14 集合、函数的更多相关文章
- python中的函数
Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也 ...
- python高级之函数
python高级之函数 本节内容 函数的介绍 函数的创建 函数参数及返回值 LEGB作用域 特殊函数 函数式编程 1.函数的介绍 为什么要有函数?因为在平时写代码时,如果没有函数的话,那么将会出现很多 ...
- python内置函数
python内置函数 官方文档:点击 在这里我只列举一些常见的内置函数用法 1.abs()[求数字的绝对值] >>> abs(-13) 13 2.all() 判断所有集合元素都为真的 ...
- python 内置函数和函数装饰器
python内置函数 1.数学相关 abs(x) 取x绝对值 divmode(x,y) 取x除以y的商和余数,常用做分页,返回商和余数组成一个元组 pow(x,y[,z]) 取x的y次方 ,等同于x ...
- Python基础篇【第2篇】: Python内置函数(一)
Python内置函数 lambda lambda表达式相当于函数体为单个return语句的普通函数的匿名函数.请注意,lambda语法并没有使用return关键字.开发者可以在任何可以使用函数引用的位 ...
- 第一篇:python高级之函数
python高级之函数 python高级之函数 本节内容 函数的介绍 函数的创建 函数参数及返回值 LEGB作用域 特殊函数 函数式编程 1.函数的介绍 为什么要有函数?因为在平时写代码时,如果没 ...
- Python的集合
1. Python的集合 1.1 集合的定义 在Python中, 集合set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种.Python中的集合set类 ...
- Python中集合set()的使用及处理
在Python中集合(set)与字典(dict)比较相似,都具有无序以及元素不能重复的特点 1.创建set 创建set需要一个list或者tuple或者dict作为输入集合 重复的元素在set中会被自 ...
- Python 内置函数笔记
其中有几个方法没怎么用过, 所以没整理到 Python内置函数 abs(a) 返回a的绝对值.该参数可以是整数或浮点数.如果参数是一个复数,则返回其大小 all(a) 如果元组.列表里面的所有元素都非 ...
- Python全栈开发之路 【第四篇】:Python基础之函数
本节内容 函数def: 1.位置参数,默认参数 2.位置参数,关键参数 3.如果参数中出现 *users,传递的参数就可以不再是固定的个数, 传过来的所有元素进行打包成元组 *args,**kwarg ...
随机推荐
- ajax 跨域请求解决方案
1.为什么出现跨域: 前端和后端同一个项目下,ajax请求的地址是localhost同一个端口是话,是不会出现跨域问题的,所以相反前端和后端分开时,ajax请求的地址或者端口不是跟后台相同时就会出现跨 ...
- C#自定义控件、用户控件、动态加载菜单按钮
一.效果图,动态加载5个菜单按钮: 二.实现方法 1.创建用户控件 2.在用户控件拖入toolStrip 3.进入用户控件的Lood事件,这里自动添加5个选 ToolStripMenuItem,后期 ...
- blfs(systemv版本与systemd版本均适用)学习笔记-从主机挂载lfs的方法
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 运行以下命令,挂载并进入lfs分区即可 su export LFS=/mnt/lfs mount -v -t ext4 /dev ...
- 51nod"省选"模测 A 树的双直径(树形dp)
题意 题目链接 Sol 比赛结束后才调出来..不多说啥了,就是因为自己菜. 裸的up-down dp,维护一下一个点上下的直径就行,一开始还想了个假的思路写了半天.. 转移都在代码注释里 毒瘤题目卡空 ...
- 洛谷P4589 [TJOI2018]智力竞赛(二分答案 二分图匹配)
题意 题目链接 给出一个带权有向图,选出n + 1n+1条链,问能否全部点覆盖,如果不能,问不能覆盖的点权最小值最大是多少 Sol TJOI怎么净出板子题 二分答案之后直接二分图匹配check一下. ...
- 关于TensorFlow你需要了解的9件事
关于TensorFlow你需要了解的9件事 https://mp.weixin.qq.com/s/cEQAdLnueMEj0OQZtYvcuw 摘要:本文对近期在旧金山举办的谷歌 Cloud Next ...
- 如何将web项目部署到weblogic
在Eclipse中配置weblogic11g服务器: 下载并安装Eclipse:www.eclipse.org 下载并安装Weblogic Server Plugin for Eclipse:http ...
- Linux 进程后台运行的几种方式 screen
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/80580779 本文出自[赵彦军的博客] screen是Linux窗口管理器,用户可 ...
- 深圳市共创力咨询为某大型上市企业提供两天的UCD内训与辅导服务!
2017年5月23和24日两天,深圳市共创力咨询为国内某大型上市企业提供了为期两天的内训与辅导服务.本次执行培训与辅导任务的是UCD(基于用户体验的设计)资深顾问蔷薇女士.蔷薇老师分别从UCD理论.U ...
- Snapshot origin volumes can be resized only while inactive: try lvchange -an
事件现象: 最近同事在扩展VG时遇到了"Snapshot origin volumes can be resized only while inactive: try lvchange ...