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)
    
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容