美文网首页
字符串、集合、容器类型总结

字符串、集合、容器类型总结

作者: 04a07ffbfb62 | 来源:发表于2016-05-15 17:20 被阅读19次

    字符串

    字符串是不可变类型,改变字符串其中的一个元素需要创建一个新的字符串

    集合

    一组无序排列的可哈希的值。扩展阅读:python(哈希性hashable和不可改变性imutable)
    支持集合关系测试
    成员关系测试:in;not in;迭代;
    不支持:索引、元素获取、切片;
    集合没有特定语法格式,只能通过工厂方法创建;
    集合类型: set(), frozenset()

    访问集合中的值:
    s = set('cheeseshop')
    for char in s:
        print s
    

    容器、类型、对象

    • 容器类型(list, dict, tuple)可以跨行定义
      l = [1,
      2,
      3]
      print l # l = [1, 2, 3]

    • 所有对象都有引用计数,为该对象新增加引用一个变量名,或放入一个容器类型中,都会增加引用计数;引用计数为0时,python会回收该对象
      import sys
      name = 'black'
      sys.getrefcount(name)
      >>>2 # 调用getrefcount()本身会引用一次该对象
      sys.getrefcount(name) - 1
      >>>1 # 获取正确调用,应减1
      hello = 'black'
      sys.getrefcount(name)
      >>>3

    • list, dict 都支持浅复制和深复制

    浅复制实际是对原对象的引用。以下均为浅复制:(1)完全切片操作[:];(2)利用工厂函数,比如 list(),dict()等;(3)使用 copy 模块的 copy 函数.;
    深复制:创建一个新容器对象,所有对象元素也是全新的;

      import copy
      person  = ['name', ['savings', '100']]
      hubby = person
      wifey = copy.deepcopy(person)
      for i in person, hubby, wifey:
            print id(i),
      >>>34235336 34235336 34255880
    
    • python中的所有对象都是‘第一类对象
    • 所有序列对象都可迭代
    • 所有序列都支持的操作和方法
      • s[i]
      • s[i:j]
      • s[i:j:stride]
      • len(s)
      • max(s)
      • min(s)
      • sum(s)
      • all(s)
      • any(s)
      • s1 + s2
      • s1 * N
      • obj in s1; obj not in s1

    相关文章

      网友评论

          本文标题:字符串、集合、容器类型总结

          本文链接:https://www.haomeiwen.com/subject/rhxmrttx.html