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

字符串

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

集合

一组无序排列的可哈希的值。扩展阅读: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

你可能感兴趣的:(字符串、集合、容器类型总结)