python学习笔记_02(序列列表)

序列-列表


1. 字符串
  1. 字符串

    • 字符串使用一对单引号或者双引号包含起来的一串字符

      'Hello python'
      "Let's go"
  2. 其他类型转换字符串

    # 1. 对象的python表达式
    repr(1000L)
    x = 100L
    `x`
    # 2. 其他对象转换为字符串
    str(3)
  3. 字符串转义

    改变原本含义

    种类

    \n, \t, \r,

  4. 字符串运算

    # 1. 字符串拼接
    'hello' 'python'
    'hello' + 'python'  #加号两边必须都是字符串常量或变量,否则会抛出TypeError
    # 2. 乘法, 把字符串重复多少变
    '*' * 10
  5. 长字符串,原始字符串,Unicode字符串

    • 长字符串:使用三个引号,跨多行字符串

      print '''This is a very long string.
      It continues here.
      And it's not over yet.'''
      
    • 原始字符串:字符串前面加个r,对反斜线(\)不做转义处理

      str = r'C:\nowhere'
    • Unicode字符串:字符串前面加个u

      python 2普通字符串以ASCII存储,python 3中所有字符串都是Unicode字符串

      unicode_str = u"I'm an unicode string"
2. 序列
2.1 序列通用操作

python内建的六种序列:元组,列表,字符串,Unicode字符串,buffer对象,xrange对象

  • 索引:索引可以是正数,也可以是负数,但是索引必须在序列的范围内,否则引发IndexError exception

    l = [1, 2, 3, 4, 5, 6]
    # 1. 索引从0开始
    l[0]    #l[0] = 1
    # 2. 索引可以使用正数也可以使用负数,正数从左开始,负数从右开始
    l[2]    #l[2] = 3
    l[-4]   #l[-4] = 3
    # 3. 负数索引时从1开始,最后一个元素为-1
    l[-1]   #l[-1] = 6
  • 分片:分片的开始和结束可以超过序列索引范围,开始和结束取不到元素返回空序列,步进可以是正数也可以是负数,正数从前往后取元素,负数从后往前取元素,start,end控制范围,step控制顺序

    • 访问一定范围的内的元素,语法[start : end : step]

      左闭右开,包含开始,不包含结束

      l = [1, 2, 3, 4, 5, 6]
      l[2:5]    #[3, 4, 5]
    • step表示步长,start,end,step可以是正数或者负数,负数表示从后往前

      l[-1:-3]     #[], step为正时,start一定要在end的左边
      l[-3:-1]     #[4, 5]
      l[-1:-3:-1]  #[6, 5]
      l[3:6]       #[4, 5, 6], 我为了获取最后一个元素,end比较最后一个至少元素大1
      l[3:]        #[4, 5, 6], end不写取剩下的所有
      l[:3]        #[1,2,3], strat不写从0开始
      l[:]         #[1, 2, 3, 4, 5, 6], 返回一个副本
      l[::-1]      #倒序

      start, end可以超出序列的索引范围,不会出现异常,只是范围内没有元素返回空序列

      分片返回的都是一个新的序列

      对分片进行赋值会改变原来的序列的,但是只对可变序列才能做赋值操作,

      否则出现TypeError: ’xx‘ object does not support item assignment

  • 加:序列进行连接操作

    [1, 2, 3, 4] + [5, 6, 7]
    #[1, 2, 3, 4, 5, 6, 7]
    [1, 2, 3] + 'python'
    # TypeError

    相同类型的序列才可以进行连接操作

  • 乘: 数字n乘以一个序列生成一个新的序列, 新的序列中原序列重复n次

    'python' * 5
    #'pythonpythonpythonpythonpython'
    [42] * 10
    [42, 42, 42, 42, 42, 42, 42, 42, 42, 42]

    None, 空序列, 初始化

    空列表[], 长度为0

    None是python中的特殊值, 表示什么都没有

    [None] * 10, 表示长度为10的空列表

  • 成员资格

    • in:检查某个对象是否为序列的成员,返回一个布尔值
    permissions = 'rw'
    'w' in permissions    #True
    'x' in permissions    #False
    'P' in 'Python'    #True
    'Py' in 'Python'    #True, python 2.3之前in操作只能检测单个字符是否存在字符串中,2.3之后支持子字符串
    l = ['albert', 'dilbert', 'smith']
    'albert' in l    #True, 类似有列表的index方法
2.2 通用函数
  • 长度:len()
  • 最大值:max()
  • 最小值:min()
2.3 列表

列表不同于字符串和元组,列表是一种可以改变的序列

列表的元素可以是任意类型

  • 其他对象转换为列表:list(), list实际是一种类型

  • 改变元素,赋值

    x = [1, 2, 3]
    x[0] = 3    #[3, 2, 1]
  • 删除元素

    x = [1, 2, 3]
    del x[1]    #[1, 3]
    del x       #删除x变量
    
  • 分片赋值

    分片赋值可以使用与原序列不等长的序列替换分片

    分片可以修改元素,插入元素,删除元素

    name = list('Perl')
    number = [1, 5]
    name[2:] = list('ar')    #['p', 'e', 'a', 'r']
    number[1:1] = [2, 3, 4]  #[1, 2, 3, 4, 5]
    number[1:4] = []         #[1, 5]
  • 列表方法

    1. append:列表末尾追加新元素

      lst = []
      lst.append(4)    #[4]
      lst.append([1, 2])    #[4, [1, 2]]
    2. count:统计某个元素在列表出现的次数

      x = [1, 2, 3, 4, 3, 2, 2]
      x.count(2)    # 3
      
    3. extend:在列表末尾一次性追加另一个序列中的多个值

      a = [1 ,2 ,3]
      b = [4, 5 ,6]
      a.extend(b)    #[1, 2, 3, 4 ,5, 6]

      extend和连接操作, 连接返回一个新的列表返回,extend是在原地操作

      a = a + b的情况下,extend比连接效率高

    4. index:返回某个值的索引位置

      knights = ['we', 'are', 'the', 'knights', 'who', 'say', 'ni']
      knights.index('who')    #4
      knights.index('herring')  #未找到抛出ValueError:'xx' is not in list
    5. insert:列表指定位置插入一个元素

      number = [1, 2, 3, 4]
      number.insert(3, 'four')    #[1, 2, 3, 'four', 4]
      number.insert(5, 'last')    #[1, 2, 3, 'four', 4, 'last']
      number.insert(10, 'last')   #[1, 2, 3, 'four', 4, 'last', 'last']

      插入位置可以为正数,也可以负数,可以超出索引范围,超过之后正数插入末尾,负数插入到开头

    6. pop:移除列表中的一个元素,并返回元素的值,默认最后一个

      x = [1, 2, 3]
      x.pop()    #3, x = [1, 2]
      x.pop(0)   #1, x = [2]
      x.pop(-1)  #2, x = []
      x.pop(10)  #IndexError: pop index out of range

      pop方法是唯一一个既改变列表又返回元素值的方法

      pop的参数可以是正数也可以是负数,但是必须是在列表的索引范围内,否则引发

      IndexError: pop index out of range

    7. remove:移除列表中第一个匹配项

      未找到匹配的值,引发ValueError异常,

      x = ['to', 'be', 'or', 'not', 'to', 'be']

x.remove(‘be’) #[‘to’, ‘or’, ‘not’, ‘to’, ‘be’]
```

  1. reverse:原地反转列表,返回空

    如果要反向迭代列表,使用reversed()函数,返回一个迭代器

  2. sort:原地排序

    如果需要返回新的排序后副本,先返回一个副本再排序

    或者使用sorted函数,sorted函数可以用于任何可迭代对象,返回一个列表

2.4 元组
  1. tuple():可以使用序列通用操作

  2. 使用小括号,只有一个元素需要加逗号(1,),空元组()

  3. 元组只有count和index两个方法

    元组主要使用场景

    可以作为字典的键使用

    作为函数的返回值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值