8、Python 序列

一、概要

在Python中,最基本的数据结构是序列(sequence)。序列中的每个元素被分配一个序号——即元素的位置,也称为索引。第一个索引是 0,第二个则是 1,以此类推。序列中的最后一个元素标记为 -1,倒数第二个元素为 -2,一次类推。 Python包含 6 中内建的序列,包括列表、元组、字符串、Unicode字符串、buffer对象和xrange对象。

  1. 索引
  2. 分片
  3. 检查某个元素是否属于序列
  4. 计算序列长度
  5. 计算最大元素及最小元素

二、索引

  1. 概念
    元素在序列中的编号。这些编号从0开始递增,0表示第一个元素,最后一个元素为序列的长度-1
  2. 语法格式
    seq[索引]
    
  3. 结构图


    image
  4. 示例代码
    字符串中使用索引
    demo = 'Hello World'
    print(demo[0]) #输出 H
    print(demo[5]) #输出空格字符串
    print(demo[-1]) #输出 d
    #思考可不可以索引是-0
    
    函数中使用索引,有一些函数的返回值为字符串,有的返回其他的序列,我们可以在函数调用之后使用[]来对返回序列的元素值进行索引
    In [6]: input("请输入:")[1]
    请输入:123
    Out[6]: '2'
    

三、切片

  1. 定义
    切片也叫分片,即提取一个范围内的序列
  2. 语法格式
    序列名(或字符串字面值)[beg_index:end_index,step] 
    
  3. 说明
    • beg_index
      起始下标,默认0
    • end_index
      终止下标,默认取到末尾
    • step:
      表示取值的步长,默认为1,步长值不能为0,默认为1,步长可以为负数,表示从右向左提取元素
  4. 注意事项
    • 范围采用左闭右开(顾头不顾尾),即第一个索引元素包含在分片内,第二个则不包含在分片内。
    • 终止索引超出范围时,分片直接取到序列最后一个元素
    • 索引和步长都具有正负两个值,分别表示左右两个方向取值。索引的正方向从左往右取值,起始位置为0;
    • 负方向从右往左取值,起始位置为-1。因此任意一个序列结构数据的索引范围为 -len到 len-1范围内的连续整数。
  5. 示例代码
    1、同时忽略两个索引,整个序列都成为分片了
    cele = "you can you up ,no can no bb ^_^"
    print(cele[:]) #输出 全部
    
    2、开始索引,结束索引默认,步长默认,从包含的开始索引截取至末尾
    print(cele[1:]) 
    
    3、开始索引为负数,结束索引默认,步长默认,从右边开始截取至末尾
    print(cele[-1:]) 
    
    4、结束索引,开始索引忽略,步长默认,截取0至结束索引
    print(cele[:5]) 
    
    5、结束索引为负数,开始索引忽略,步长默认,截取0至右边结束索引
    print(cele[:-3])
    
    6、开始索引比结束索引的元素在序列中出现得晚时,切片为空序列
    print(cele[-3:1])
    
    7、步长为2,截取开始索引到结束索引
    print(cele[0:10:2])
    
    8、左索引比右索引的元素在序列中出现得晚时
    print(cele[::-1]) #反置
    
  6. 总结
    • seq[start_index]
      返回索引值为start_index的对象。start_index为 -len(seq)到len(seq)-1之间任意整数。
    • seq[start_index: end_index]
      返回索引值为start_index到end_index-1之间的连续对象。
    • seq[start_index: end_index : step]
      返回索引值为start_index到end_index-1之间,并且索引值与start_index之差可以被step整除的连续对象。
    • seq[start_index: ]
      缺省end_index,表示从start_index开始到序列中最后一个对象。
    • seq[:end_index]
      缺省start_index,表示从序列中第一个对象到end_index-1之间的片段。
    • seq[:]
      缺省start_index和end_index,表示从第一个对象到最后一个对象的完整片段。
    • seq[::step]
      缺省start_index和end_index,表示对整个序列按照索引可以被step整除的规则取值

四、序列相乘

  1. 说明
    用数字x乘以一个序列会产生新的序列,在新的序列中,原来的序列将被重复x次
  2. 示例代码
    i = '1' * 5
    print(type(i))
    print(i)
    

五、序列相加

  1. 说明
    两个序列相加返回一个新的序列
  2. 示例代码
    seq1 = 'Hello'
    seq2 = 'World'
    seq3 = seq1 + seq2
    print(seq3)
    

六、使用None创建空序列

  1. 示例代码
    sequence = 10 * [None]
    sequence
    [None, None, None, None, None, None, None, None, None, None]
    

七、是否包含

  1. 说明
    指某值是否在序列中,使用in运算符,运算符结果为布尔值True 或者 False
  2. 语法格式
    '某值' in 序列
    
  3. 示例代码
    cele = "you can you up ,no can no bb ^_^"
    print('y' in cele) # True
    print('^_^' in cele) # True
    print('you1' in cele) # false
    

八、序列长度

  1. 内置函数
    len(序列)
    
  2. 示例代码
    cele = "you can you up ,no can no bb ^_^"
    print(len(cele)) #32
    

九、最小值

  1. 内置函数
    min(序列)
    
  2. 示例代码
    #纯数字
    numbers = "123456789"
    print(min(numbers)) #1
    #纯字母
    letter = "abcdef"
    #字母加数字
    letter = "abcdef123"
    print(min(letter)) #1
    #中文 底层比较是Unicode编码 
    letter = "时间在哪里,成就就在哪里"   
    print(min(letter)) #输出  ,(\u002c)
    

十、最大值

  1. 内置函数
    max(序列)
    
  2. 示例代码
    #纯数字
    numbers = "123456789"
    print(max(numbers)) #9
    #纯字母
    letter = "abcdef"
    #字母加数字
    letter = "abcdef123"
    print(max(letter)) #f
    #中文 底层比较是Unicode编码 
    letter = "时间在哪里,成就就在哪里"   
    print(max(letter)) #输出  间(\u95f4)
    

你可能感兴趣的:(8、Python 序列)