zoukankan      html  css  js  c++  java
  • python基础——dict和set(字典和集合)

    1.dict:pop(),get(),in,{}

    >>> dicttest = {'marry':34,'jucy':56} --初始化
    >>> dicttest
    {'jucy': 56, 'marry': 34}
    >>> dicttest['marry']=66  --替换
    >>> dicttest
    {'jucy': 56, 'marry': 66}
    >>> dicttest['jazz']=23   --添加,一个一个添加
    >>> dicttest
    {'jucy': 56, 'marry': 66, 'jazz': 23}
    >>> dicttest.pop['jazz']  --删除(错误)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'builtin_function_or_method' object is not subscriptable
    >>> dicttest.pop('jazz')
    23
    >>> dicttest
    {'jucy': 56, 'marry': 66}
    >>> 'jucy' in dicttest --判断是否存在
    True
    >>> dicttest.get('jucy')--获取
    56
    >>> dicttest.get('jucy','zz')
    56
    >>> dicttest.get('jucyz','zz') --获取不到返回相应自定义信息
    'zz'
    >>>

    2.set:add(),remove()

       >>>

       >>> list1 = [1,2,3]
    >>> list2 = [2,3,4]
    >>> set1 = set(list1)
    >>> set1
    {1, 2, 3}
    >>> set2 = set(list2)
    >>> set2
    {2, 3, 4}
    >>> set1.add(5)
    >>> set1
    {1, 2, 3, 5}
    >>> set1.remove()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: remove() takes exactly one argument (0 given)
    >>> set1.remove(5)
    >>> set1&set2
    {2, 3}
    >>> set1|set2
    {1, 2, 3, 4}

    3.不可变对象,字典key和集合元素都应该是不可变对象

       字符串和数字均是不可变对象,列表等均不是。

    >>> a = 'abc'
    >>> a.replace('a', 'A')
    'Abc'
    >>> a
    'abc'

    要始终牢记的是,a是变量,而'abc'才是字符串对象!有些时候,我们经常说,对象a的内容是'abc',但其实是指,a本身是一个变量,它指向的对象的内容才是'abc'

    ┌───┐                  ┌───────┐
    │ a │─────────────────>│ 'abc' │
    └───┘                  └───────┘
    

    当我们调用a.replace('a', 'A')时,实际上调用方法replace是作用在字符串对象'abc'上的,而这个方法虽然名字叫replace,但却没有改变字符串'abc'的内容。相反,replace方法创建了一个新字符串'Abc'并返回,如果我们用变量b指向该新字符串,就容易理解了,变量a仍指向原有的字符串'abc',但变量b却指向新字符串'Abc'了:

    ┌───┐                  ┌───────┐
    │ a │─────────────────>│ 'abc' │
    └───┘                  └───────┘
    ┌───┐                  ┌───────┐
    │ b │─────────────────>│ 'Abc' │
    └───┘                  └───────┘
    

    所以,对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。

     

     

  • 相关阅读:
    课下作业(ucosii、catuserlist、ls实现、stat实现等)-20175204张湲祯
    2019-2020-2 20175235 泽仁拉措《网络对抗技术》 Exp9 web安全基础
    2019-2020
    2019-2020
    2019-2020
    2019-2020
    2019-2020
    2019-2020-2 网络对抗技术 exp3 免杀原理与实践
    2019-2020-2《网络对抗技术》20175235 Exp2 后门原理与实践
    2019-2020-2 2 20175235 泽仁拉措 《网络对抗技术》实验一 PC平台逆向破解
  • 原文地址:https://www.cnblogs.com/wuchenggong/p/8745211.html
Copyright © 2011-2022 走看看