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

[经验分享] python基础3-12764272

[复制链接]

尚未签到

发表于 2018-8-10 10:18:41 | 显示全部楼层 |阅读模式
  python基础3
  交换:
  a,b=b,a
  相当于定义了一个元组t=(b,a)
  然后将t[0]的值给了a,t[1]的值给了b
  ####字典####
  定义用花括号
  集合定义若为空的话,会默认为字典,所以集合不能为空
  子典只能通过关键字来查找值,因为字典是key-value(关键字-值),因此不能通过值来查找关键字
  In [1]: dic = {"user1":"123","user2":"234","user3":"789"}
  In [3]: dic["234"]
  ---------------------------------------------------------------------------
  KeyError                                  Traceback (most recent call last)
  <ipython-input-3-2845b64d96b1> in <module>()
  ----> 1 dic["234"]
  KeyError: '234'
  字典是一个无序的数据类型,因此也不能进行索引和切片等操作。
  In [1]: dic = {"user1":"123","user2":"234","user3":"789"}
  In [2]: dic["user1"]
  Out[2]: '123'
  In [5]: dic["user2"]
  Out[5]: '234'
  In [7]: user = ['user1','user2','user3']
  In [8]: passwd = ['123','234','456']
  In [9]: zip(user,passwd)
  Out[9]: [('user1', '123'), ('user2', '234'), ('user3', '456')]
  In [10]:
  当你有一个用户名单和密码,若使用列表的类型,判断用户是否和密码一致时,就比较麻烦,而使用字典时,只需通过关键子就可以返回相对应的值,(如上例子:当定义一个子典当你搜索user1时,字典类型就会返回该关键字对应的密码,此时只需判断该密码是否匹配即可)
  ####字典的基本操作###
  In [17]: dic.
  dic.clear       dic.items       dic.pop         dic.viewitems
  dic.copy        dic.iteritems   dic.popitem     dic.viewkeys
  dic.fromkeys    dic.iterkeys    dic.setdefault  dic.viewvalues
  dic.get         dic.itervalues  dic.update
  dic.has_key     dic.keys        dic.values
  字典添加
  In [12]: dic
  Out[12]: {'user1': '123', 'user2': '234', 'user3': '789'}
  In [13]: dic["westos"]='linux'
  In [14]: dic
  Out[14]: {'user1': '123', 'user2': '234', 'user3': '789', 'westos': 'linux'}
  In [15]: dic["hello"]='world'
  In [16]: dic            ####由此可以看出字典是无序的,在添加时,并不会按照顺序往后添加####
  Out[16]:
  {'hello': 'world',
  'user1': '123',
  'user2': '234',
  'user3': '789',
  'westos': 'linux'}
  In [17]:
  字典更新
  In [22]: dic
  Out[22]: {'hello': 'world', 'user1': '123', 'user2': '234', 'user3': '789'}
  In [23]: dic["user1"]="redhat"        ###可直接通过赋值对关键字进行更新###
  In [24]: dic
  Out[24]: {'hello': 'world', 'user1': 'redhat', 'user2': '234', 'user3': '789'}
  ###或者通过dic.update更新###
  In [25]: dic
  Out[25]: {'hello': 'world', 'user1': 'redhat', 'user2': '234', 'user3': '789'}
  In [26]: help(dic.update)
  Help on built-in function update:
  update(...)
  D.update([E, ]**F) -> None.  Update D from dict/iterable E and F.
  If E present and has a .keys() method, does:     for k in E: D[k] = E[k]
  If E present and lacks .keys() method, does:     for (k, v) in E: D[k] = v
  In either case, this is followed by: for k in F: D[k] = F[k]
  (END)
  In [28]: dic1={'yunwei':"westos",'user1': 'redhat'}
  In [29]: dic.update(dic)
  dic   dic1  dict
  In [29]: dic.update(dic1)        ###将dic1中dic所没有的更新给了dic###
  In [30]: dic
  Out[30]:
  {'hello': 'world',
  'user1': 'redhat',
  'user2': '234',
  'user3': '789',
  'yunwei': 'westos'}
  In [31]:
  ####若是关键字相同,而值不同,就将值更新给他####
  In [35]: dic
  Out[35]: {'hello': 'world'}
  In [36]: dic1
  Out[36]: {'user1': 'redhat', 'yunwei': 'westos'}
  In [37]: dic1["hello"]="hai"
  In [38]: dic.update(dic1)
  In [39]: dic
  Out[39]: {'hello': 'hai', 'user1': 'redhat', 'yunwei': 'westos'}
  In [42]: dic.clear()        ###清空dic###
  In [43]: dic
  Out[43]: {}
  In [44]: del(dic)        ###删除dic###
  In [45]: dic
  ---------------------------------------------------------------------------
  NameError                                 Traceback (most recent call last)
  <ipython-input-45-1b445b6ea935> in <module>()
  ----> 1 dic
  NameError: name 'dic' is not defined
  ####字典的删除####
  In [49]: dic1
  Out[49]: {'user1': 'redhat', 'yunwei': 'westos'}
  In [50]: dic1.pop("user1")        ###指定关键字,删除该关键字和值####
  Out[50]: 'redhat'
  In [51]: dic1
  Out[51]: {'yunwei': 'westos'}
  In [52]:
  In [74]: dic1.popitem()        ###不指定关键字,随即删除###
  Out[74]: ('yunwei', 'westos')
  In [77]: dic = {"hello":"123","westos":"linux"}
  In [79]: dic.keys()        ###查看dic的全部关键字###
  Out[79]: ['hello', 'westos']
  In [80]: dic.values()        ###查看dic的全部值###
  Out[80]: ['123', 'linux']
  In [82]: dic.get("hello")    ###得到相对应的关键字的值,若关键字不存在,则默认返回none
  Out[82]: '123'
  In [83]: dic.get("redhat")
  In [84]: print dic.get("redhat")
  None
  In [87]: dic.has_key("hello")        ###查看是否有该关键字,
  Out[87]: True
  In [88]: dic.has_key("world")
  Out[88]: False
  dict.fromkeys()            ###可以通过该操作实现去重###
  In [89]: dic
  Out[89]: {'hello': '123', 'westos': 'linux'}
  In [90]: dic.fromkeys([1,2,3,4])
  Out[90]: {1: None, 2: None, 3: None, 4: None}
  In [91]: dic.fromkeys([1,2,3,4],'hello')
  Out[91]: {1: 'hello', 2: 'hello', 3: 'hello', 4: 'hello'}
  In [38]: d = {}
  In [32]: li = [1,2,3,1,2,3]            ###去重###
  In [33]: d.fromkeys(li)
  Out[33]: {1: None, 2: None, 3: None}
  In [34]: d.fromkeys(li).keys()
  Out[34]: [1, 2, 3]
  字典的key必须是不可变的数据类型
  In [94]: dic = {1:'1',2:'2',1:'a'}
  In [95]: dic
  Out[95]: {1: 'a', 2: '2'}        ###一个关键字只能对应一个值###
  In [96]: for key in dic.keys():        ###逐个遍历key###
  ....:     print "key=%s" % key
  ....:
  key=1
  key=2
  In [97]: for value in dic.values():    ###逐个遍历value的值###
  print "value=%s" % value
  ....:
  value=a
  value=2
  In [98]: for key,value in dic.keys(),dic.values():    ###逐个遍历key -> value 的值#####
  ....:     print "%s -> %s" %(key,value)
  ....:
  1 -> 2
  a -> 2
  In [100]: dic
  Out[100]: {1: 'a', 2: '2'}
  In [101]: dic.items()            ###以元组的形式一一对应key和value的值###
  Out[101]: [(1, 'a'), (2, '2')]
  In [102]: for k,v in dic.items():
  .....:     print "%s -> %s" %(k,v)
  .....:
  1 -> a
  2 -> 2
  和list的比较,dict的不同:
  1 查找和插入的速度快,字典不会随着key值的增加查找速度减慢
  2 占用内存大,浪费空间
  小练习:
  去掉一个最高分和最低分,并且显示平均值
  li = [90,91,67,100,89]
  In [103]: li = [90,91,67,100,89]
  In [104]: li.sort()        ###排序###
  In [105]: li
  Out[105]: [67, 89, 90, 91, 100]
  In [106]: li.pop()
  Out[106]: 100
  In [107]: li.pop(0)
  Out[107]: 67
  In [108]: li
  Out[108]: [89, 90, 91]
  In [109]: sum(li)/len(li)    ###sum函数求和###
  Out[109]: 90
  小练习:用字典实现case语句:
  !/usr/bin/env python
  #coding:utf-8
  from __future__ import division
  num1 = input("num1:")
  oper = raw_input('操作:')
  num2 = input('num2:')
  dic = {"+":num1+num2,"-":num1-num2,"*":num1*num2,'/':num1/num2}
  if oper in dic.keys():
  print dic[oper]
  #####函数####
  函数名的理解:函数名与变量名类似,其实就是指向一个函数对象的引用;
  给这个函数起了一个“别名”:函数名赋给一个变量
  In [5]: sum(li)
  Out[5]: 6
  In [6]: a = sum        ###将sum的函数名给了a变量,使得a能够进行求和###
  In [7]: a(li)
  Out[7]: 6
  In [8]:
  In [8]: sum = abs
  In [9]: sum(-1)
  Out[9]: 1
  In [10]: sum([2,4,5]    ###将abs的函数名给了sum,则sum就不再具有求和的功能###
  ---------------------------------------------------------------------------
  TypeError                                 Traceback (most recent call last)
  <ipython-input-10-d3c81a94a2a0> in <module>()
  ----> 1 sum([2,4,5])
  TypeError: bad operand type for abs(): 'list'
  In [11]: a([2,4,5])
  Out[11]: 11
  ####函数的返回值###
  def    hello():
  print "hello"
  print hello()            ###该函数没有返回值,只是打印了hello,返回值为none
  def    hello():
  return    ”hello“
  print hello()            ###该函数有返回值,则返回一个hello###
  ####函数在执行过程中一旦遇到return,就执行完毕并且将结果返回,如果没有遇到return,返回值为none###
  ###定义一个什么也不做的空函数,可以用pass语句,作为一个占位符使得代码先运行起来
  def hello():
  return "hello"
  def world():
  pass
  print hello()
  print world()
  运行结果:
  /usr/bin/python2.7 /home/kiosk/PycharmProjects/pythonbasic/10.py
  hello
  None
  Process finished with exit code 0
  小练习:将abs的错误显示进行优化###
  def my_abs(x):
  if isinstance(x,(int,float)):    ###判断数据类型,是int或是float(也可以是别的类型,看你写的)###
  print   abs(x)
  else:
  print "请输入整型或浮点型的数"
  my_abs("a")
  my_abs(123)
  执行结果:
  /usr/bin/python2.7 /home/kiosk/PycharmProjects/pythonbasic/11.py
  请输入整型或浮点型的数
  123
  Process finished with exit code 0
  小练习:定义一个函数func(name),该函数效果如下:
  func('hello')    -> 'Hello'
  func('World')    -> 'World'
  def func(name):
  print name.capitalize()
  name = raw_input("name:")
  func(name)
  执行结果:
  /usr/bin/python2.7 /home/kiosk/PycharmProjects/pythonbasic/12.py
  name:hello
  Hello
  Process finished with exit code 0
  函数的返回值,函数可以返回多个值
  小练习:定义一个函数func,传入两个数字,返回两个数字的最大值和平均值
  def func(x,y):
  if x>y:
  return x,(x+y)/2
  else:
  return y,(x+y)/2
  x=6
  y=3
  print func(x,y)
  执行结果:
  /usr/bin/python2.7 /home/kiosk/PycharmProjects/pythonbasic/13.py
  (6, 4)            ###由此可见,返回多个值,实际上是返回一个元组###
  Process finished with exit code 0
  ###返回的元组的括号可以省略,函数调用接受返回值时,按照位置赋值变量###
  def func(x,y):
  if x>y:
  return x,(x+y)/2
  else:
  return y,(x+y)/2
  x=6
  y=3
  avg,maxnum = func(x,y)
  print avg,maxnum
  执行结果:
  /usr/bin/python2.7 /home/kiosk/PycharmProjects/pythonbasic/13.py
  6 4
  Process finished with exit code 0
  ###函数的参数###
  def power(x,n=2):    ###设定n默认为2,则n为默认参数,x为必选参数###
  return x**n
  print power(2)
  def power(x,n=2):
  return x**n
  print power(2,4)    ###也可以进行多次操作###
  ####当默认参数和必选参数同时存在时,一定要将必选参数放在默认参数之前###
  ###设置默认参数时,把变化大的参数放前面,变化小的参数放后面,将变化小的参数设置为默认参数###
  def enroll(name,age=22,myclass="westoslinux"):
  print 'name=%s'% name
  print 'age:%d'% age
  print 'class:%s' %myclass
  enroll('user1')
  enroll('user2',20)
  enroll('user3',18,'全能班')
  执行结果:
  name=user1
  age:22
  class:westoslinux
  name=user2
  age:20
  class:westoslinux
  name=user3
  age:18
  class:全能班
  Process finished with exit code 0
  ###默认参数必须使不可变的数据类型###
  例:
  先定义一个函数,传入一个 list,添加一个END 再返回
  def fun(li=[]):
  li.append("END")
  return li
  print fun([1,2,3])
  print fun()
  print fun()
  执行结果:
  /usr/bin/python2.7 /home/kiosk/PycharmProjects/pythonbasic/14.py
  [1, 2, 3, 'END']
  ['END']
  ['END', 'END']        ###因为列表是可变的数据类型,所以在第二次输入print    fun()时,默认参数就不是空,而已经有了一个“END”###
  Process finished with exit code 0
  更改为:li=None,则此时li的默认值为不可变的数据类型
  def fun(li=None):
  if li is None:
  return ['END']
  li.append('END')
  return li
  print fun([1,2,3])
  print fun()
  print fun()
  执行结果为:
  /usr/bin/python2.7 /home/kiosk/PycharmProjects/pythonbasic/14.py
  [1, 2, 3, 'END']
  ['END']
  ['END']
  Process finished with exit code 0
  ####可变参数###
  定义参数时,形参可以为*args,使函数可与接受多个参数;
  如果想要将一个列表或者元组传入参数,也可以通过*li或*t,将参数传入函数里。
  def fun(*args):        ###参数前面一定要加*###
  print type(args)
  return max(args),min(args)
  li = [1,42,3,14,58,6]
  print fun(*li)        ###传递列表时,前面也要加*###
  执行结果:
  /usr/bin/python2.7 /home/kiosk/PycharmProjects/pythonbasic/14.py
  <type 'tuple'>
  (58, 1)
  Process finished with exit code 0
  ###若传递列表时,不加*号###
  def fun(*args):
  print type(args)
  return max(args),min(args)
  li = [1,42,3,14,58,6]
  print fun(li)
  执行结果:
  /usr/bin/python2.7 /home/kiosk/PycharmProjects/pythonbasic/14.py
  <type 'tuple'>
  ([1, 42, 3, 14, 58, 6], [1, 42, 3, 14, 58, 6])
  Process finished with exit code 0
  ###传递多个数###
  def fun(*args):
  print type(args)
  return max(args),min(args)
  print fun(1,42,3,14,58,6)
  执行结果:
  /usr/bin/python2.7 /home/kiosk/PycharmProjects/pythonbasic/14.py
  <type 'tuple'>
  (58, 1)
  Process finished with exit code 0
  ###关键字可变参数###
  def enroll(name,age=22,**kwargs):
  print 'name=%s'% name
  print 'age:%d'% age
  for k,w in kwargs.items():
  print '%s:%s'%(k,w)
  print type(kwargs)
  enroll('user3',myclass='运维班')
  执行结果:
  /usr/bin/python2.7 /home/kiosk/PycharmProjects/pythonbasic/14.py
  name=user3
  age:22
  myclass:运维班
  <type 'dict'>
  Process finished with exit code 0
  参数定义优先级:必选参数>默认参数>可变参数>关键字参数
  *arg,可变参数接受的是元组
  **kwargs,关键字参数,接受的是字典
  ###局部变量,只在函数内部生效,全局变量,在整个代码中生效###

运维网声明 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.yunweiku.com/thread-549545-1-1.html 上篇帖子: python 字典 下篇帖子: python2 作业
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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