Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

序列

  • 常用序列:list,string, tuple(只读列表)
  • 序列类似数组, 但可以包含不同类型的对象,长度也可变化

序列类型操作符

  1. 成员关系操作符(in, not in)
  2. 连接操作符(+)
  3. 重复操作符(*)
  4. 切片操作符([],[:],[::])

字符串

  1. 一些引号分隔的字符
  2. 不可分字符类型
  3. 字符串格式化操作符(%)提供类似printf()的功能
  4. 三引号
  5. 原始字符串对每个特殊字符串都使用它的原意
  6. Python字符串不是通过NUL或者‘\0’来结束的
  • 字符串连接
    • 使用 ''.join(['wxl ',' sci'])或者 '%s%s' % ('foo','bar') 替代 + 拼接
    • 少量数据使用 += 拼接, 大量数据使用 ''.join 更高效。

列表

  • 空列表已有40字节空间, 不够时每次申请4个元素的空间, 用完后再继续申请
    l = [] ; l.sizeof()

元组

  • 元组是由逗号决定的,而不是括号。 b = ("Python") 是一个字符串 b = ("Python",) 才是一个元组

解析表达式、列表推导式 data = [x for x in range(10) if x %2 == 0]

生成器表达式 (惰性计算,每次处理一个对象,而不是直接构造整个数据结构,节约内存) data = (x for x in range(10) if x %2 == 0)

###常用内置函数 l = [1,2,3,4]

  • l.count(3)
  • l.index(7)
  • l.reverse()
  • l.sort()

tup=(1,2,3,4)

  • tup.count(3)
  • tup.index(7)
  • reversed(tup)
  • sorted(tup)

总结

  • 总的来说,列表和元组都是有序的,可以存储任意数据类型的集合,区别主要在于下面这两点。
    • 列表是动态的,长度可变,可以随意的增加、删减或改变元素。列表的存储空间略大于元组,性能略逊于元组。
    • 元组是静态的,长度大小固定,不可以对元素进行增加、删减或者改变操作。元组相对于列表更加轻量级,性能稍优。

浅拷贝和深拷贝

  • 浅拷贝
    浅拷贝,是指重新分配一块内存,创建一个新的对象,里面的元素是原对象中子对象的引用
      l = [1,2,3]
      n = list(l)
    
      for i in range(l.__len__()):
          print("list l element{} address is: {} ".format(i,id(l[i])))
          print("list n element{} address is: {} ".format(i, id(n[i])))
      ------------------------------------------------------------------
      list l element0 address is: 140734895190272 
      list n element0 address is: 140734895190272 
      list l element1 address is: 140734895190304 
      list n element1 address is: 140734895190304 
      list l element2 address is: 140734895190336 
      list n element2 address is: 140734895190336 
    
  • 深拷贝
    所谓深度拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没有任何关联
     x = [1,2,3]
     y = copy.deepcopy(x)