设为首页 收藏本站
查看: 568|回复: 0

[经验分享] Python 序列通用操作介绍

[复制链接]

尚未签到

发表于 2015-11-29 08:14:48 | 显示全部楼层 |阅读模式
  上一篇:python字符串基础一
  下一篇:Python 列表操作简介

序列概览
  Python包含6种内置的序列:列表、元组、字符串 、Unicode字符串、buffer对象、xrange对象。在序列中的每个元素都有自己的编号。列表与元组的区别在于,列表是可以修改,而组元不可修改。理论上几乎所有情况下元组都可以用列表来代替。有个例外是但元组作为字典的键时,在这种情况下,因为键不可修改,所以就不能使用列表。
  我们先来编写一个列表:
  使用方括号括起来,列表元素使用逗号进行分隔:
>>> a = ["hello",100]  
>>> a
  
['hello', 100]
  
>>>
  序列是可以嵌套的:
>>> A =["xiaoming",98]  
>>> B =["xiaohong",87]
  
>>> grade=[A,B]
  
>>> grade
  
[['xiaoming', 98], ['xiaohong', 87]]
  
>>>
  下面来介绍一下通用的序列操作。

通用序列操作
  所有序列都可以进行如下操作:


  • 索引
  • 分片


  • 检查某个元素是否属于序列成员(成员资格)
  并且python提供了一些序列内置函数:


  • 计算序列长度
  • 找出做大元素及做小元素
  另外序列操作还有迭代,这个以后介绍。
  
下面就这些操作做一个介绍

索引

序列的索引
  索引即标号,及元素在序列中的编号。这些编号从0开始递增,0表示第一个元素:
>>> world = "Hello Word"  
>>> world[0]
  
'H'
  
>>> world[3] #第四个元素
  
'l'
  
>>>
  用法就如C语言的数组一样。在python中比较神奇的是,索引可以是负数:使用负数时,Python会从右边向左边计数,最后一个元素的索引值为-1,为啥不是-0呢?因为会和第一个元素重合:
>>> world = "Hello Word"  
>>> world[0]
  
'H'
  
>>> world[3]
  
'l'
  
>>> world[-1]#从右边开始计数
  
'd'
  
>>> world[-2]
  
'r'
  
>>>

字符串字面值的索引
  字符串字面值可以直接使用索引,不需要定义一个变量来引用这个字符串字面值,这和C语言不一样:
>>> "Hello Word"[1]  
'e'
  
>>>

在函数返回值使用索引
  有一些函数的返回值为字符串,有的返回其他的序列,我们可以在函数调用之后使用[]来对返回序列的元素值进行索引。
>>> input("input something:")[1]  
input something:Hello word
  
'e'
  
>>>

示例小程序
  在这个例子中我们使用序列来存储12个月份的单词字符串与每月天数的数字后缀。程序的目的是输入年月日后进行序列索引查找对应的单词并输出结果:
  
>>>
  
Year:2015
  
Month:9
  
Day:4
  
4th September 2015
  
>>>
  程序清单1
months =[  'January',
  'February',
  'March',
  'April',
  'May',
  'June',
  'July',
  'August',
  'September',
  'Octber',
  'November',
  'December',
  ]
  
endings=['st','nd','rd']+17*['th']\
  +['st','nd','rd']+7*['th']\
  +['st']
  

  
year = input('Year:')
  
month = input('Month:')
  
day = input('Day:')
  
print(day+endings[int(day)-1]+' '+months[int(month)-1]+' ' +year)
  注意点:


  • 在序列前乘以一个数字x,表示重复序列元素x次并存入序列中:
>>> a = 5*['a','b']  
>>> a
  
['a', 'b', 'a', 'b', 'a', 'b', 'a', 'b', 'a', 'b']
  
>>>

分片
  分片即提取一个范围内的序列,语法是:

  序列名(或字符串字面值)[a:b] 提取索引a~b范围内的子序列。

>>> number=[1,2,3,4,5,6,7,8,9,10]  
>>> number[1:5]
  
[2, 3, 4, 5]
  
>>>
  注意点:


  •   范围采用左闭右开,即第一个索引元素包含在分片内,第二个则不包含在分片内。就像C++容器采取的迭代器策略一样。

  •   右索引超出范围时,分片直接取到序列最后一个元素:

>>> number[0:19]  
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  
>>>


  • 左索引比右索引的元素在序列中出现得晚时,分片为空序列:
>>> number[-3:1]  
[]
  
>>>


  • 忽略右索引,分片将直接取到最后一个索引:
>>> number[0:]  
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  
>>>


  • 同样的,忽略左索引时:
>>> number[:10]  
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  
>>>


  • 自然的,同时忽略两个索引,整个序列都成为分片了:
>>> number[:]  
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  
>>>

分片的步长
  分片的步长指的是,在分片索引标记的范围内,多长的距离取样一个值构成分配。在上面展示的代码中,步长都是为1的,也即范围内所有元素都被取样。我们可以设置分片步长:

  number[a

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-144757-1-1.html 上篇帖子: python 装饰器 下篇帖子: python 发送邮件例子
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表