设为首页 收藏本站
查看: 1486|回复: 0

[经验分享] Python之集合、函数

[复制链接]

尚未签到

发表于 2018-8-6 11:36:32 | 显示全部楼层 |阅读模式
一   集合

1 集合定义:
  1 如果花括号为空,则是字典类型
DSC0000.jpg

  2 定义一个空集合,使用set 加小括号
DSC0001.jpg

  使用B方式定义集合时,集合内部的数必须是可迭代对象,数值类型的不可以
DSC0002.jpg


2 集合的简单应用
  实现对集合内元素的去重操作,此操作可应用于对列表的去重
  1 使用集合对列表进行去重操作
DSC0003.jpg

  2 使用字典的键不重复性对列表进行去重
DSC0004.jpg


3集合的增删改查

1 集合的增:
  A  add 实现对非可变类型数据的添加操作(除列表,字典)
DSC0005.jpg

DSC0006.jpg

  B update  实现对可迭代对象的加入操作(数值类型则不能加入其中)
DSC0007.jpg


2   删
  A pop()支持对集合的无序删除操作
DSC0008.jpg

  B remove 支持对集合的指定元素的删除工作,若不存在,则报错
DSC0009.jpg

  C discard  删除集合中指定元素,如果不存在,则无反应
DSC00010.jpg

  D clear 清空集合
DSC00011.jpg

  例题应用:
  要求输入一个数,使其成为1-1000之间产生随机数的个数的总和个数,并对这些数进行排序(有小到大)
  1
  [root@www ~]# cat a.py
  #!/usr/bin/env python
  #coding=utf-8
  import random   #导入该模块,用于生成1到1000的随机数
  l1=[]
  s=set()
  N=input("请输入数字总和N:")
  for i in range(N):  #进行循环的总数
  N1=random.randint(1,1000)   # 生成1-1000内的随机数N个
  s.add(N1)
  l1=list(s)
  l1.sort() #使用列表的内置方法进行排序
  print l1
  2
  [root@www ~]# cat a.py
  #!/usr/bin/env python
  #coding=utf-8
  import random
  l1=[]
  s=set()
  N=input("请输入数字总和N:")
  for i in range(N):
  N1=random.randint(1,1000)
  s.add(N1)
  l1=list(s)
  print sorted(l1)  使用内置函数进行排序

3  查(关系测试)
  1 交集 (输出两个集合中共有的元素)
DSC00012.jpg

DSC00013.jpg

  2 并集(输出列个集合中所有存在的元素)
DSC00014.jpg

DSC00015.jpg

  3 差集(输出第一个集合中与第二个集合不同的元素)
DSC00016.jpg

DSC00017.jpg

  4 对等差分 (输出两个集合中各不存在但对方存在的元素)
DSC00018.jpg

DSC00019.jpg

  集合关系判断(子集,父集)
DSC00020.jpg


二   总结:
  1 可变数据类型:列表,字典,集合
  2 不可变数据类型:数值类型,元祖,字符串
  可变数据类型实现某个功能,直接改变可变的数据
  不可变数据类型实现某些功能,需要将结果赋值给另一个变量
  可迭代数据类型(能实现for 循环):str  list  tuple  dict   set
  不可迭代数据类型:数值类型
  是否支持索引,切片,链接,重复特性
  有序的数据类型:str list tuple
  无序的数据类型:dict  set

三  函数

1 无参数的函数
  函数的定义:
  def   函数名():
  函数体
  函数的调用:
  函数名()
  定义函数时,函数不执行,调用函数时,函数才执行

2 有参数的函数

1 形参
  在def 函数定义时使用的参数称为形式参数,不具备实际的意义,
  def a1(x,y):
  ....:     print x+y
  

此时的x,y被称为形式参数  

  形参的分类
  A 必须参数
  def a1(x,y):
  ....:     print x+y
  B 默认参数
  In [59]: def a4(x,y=1):   #y=1 用于当只传入一个参数时,此y=1则会发生作用,若传入两个参数,则失效
  ....:     print x,y
  ....:
  In [60]: a4(1)
  1 1
  In [61]: a4(1,2)
  1 2
  C 可变参数
  In [38]: def a2(*x):   可以同时传输多个参数,其产生的结果是一个元祖
  ....:     print x
  ....:
  In [39]: a2(1,2,3,4,5,6)
  (1, 2, 3, 4, 5, 6)
  a2([1,2,3,4,5])
  ([1, 2, 3, 4, 5],)
  D   关键字参数:
  In [57]: def a3(**x):
  ....:     print x   #其返回值是一个字典
  ....:
  In [58]: a3(a=1,b=2,c=3)
  {'a': 1, 'c': 3, 'b': 2}
  函数定义时,若有多种类型的参数需要定义,则必须要遵循:必须参数--默认参数--可变参数--关键字参数

2  实参
  在调用函数时传入函数体内部的参数称为实参,有实际的效果的参数
  In [35]: a1(1,2)
  3
  In [36]: a=1;b=3
  In [37]: a1(a,b)
  4
  此时的1,2 和 a,b 都是实参
  应用,用于数之和
  In [41]: def a2(*x):
  ....:     sum=0
  ....:     for i in x:
  ....:         sum+=i
  ....:     print sum
  ....:
  In [42]: a2(1,2,3,4,5,6,7,8,9)
  45

3返回值
  函数中没有return时,默认返回None
DSC00021.jpg


1 返回多个值
  #!/usr/bin/env python
  #coding=utf-8
  def a1(*args):
  '''
  返回最大值和最小值
  :param args: 要求输入多个数作比较
  :return: 返回最大值和最小值
  '''
  return  max(args) ,min(args)
  print a1(1,2,3,4,10,20,100)

4 函数的变量作用域
  global 关键字必须要先声明,再使用
  #!/usr/bin/env python
  #coding=utf-8
  x=1
  def a1(x):
  x=2
  print x
  print x  其结果是x=1
  a1(x)  其结果是x=2 ,因为在调用函数内部时,此x=2是局部变量,其优先级高于X=1
  #!/usr/bin/env python
  #coding=utf-8
  x=1
  def a1():
  global x   #声明变量为全局变量,并赋值
  x=2
  print x
  a1()   结果为2
  print x   结果为2
  名称空间:一个变量所能够生效的作用域
  本地作用域:只能在函数内部使用
  模块定义:全局作用域
  函数定义:本地作用域
  变量名解析:LEGB 原则:
  变量名引用分三个作用域进行: 首先是本地。之后是函数内,接着是全局,最后是内置
  Python 创建、改变或查找变量名都是在名称空间中进行
  在代码中变量名被赋值的位置决定了其能被访问到的返回
  函数定义了本地作用域,而模块定义了全局作用域
  每个模块都是一个全局作用域,因此,全局作用域的范围仅限于单个程序文件
  每次对函数的调用都会创建一个人新的本地作用域,赋值的变量除非声明为全局变量,否则均为本地变量
  所有的变量都可以归纳为本地、全局或内置的(由_builtin_模块所提供的)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-547576-1-1.html 上篇帖子: Centos 7 安装python 版本 下篇帖子: python 操作redis集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表