Python_序列对象内置方法详解_String
目录
- 目录
- 前言
- 软件环境
- 序列类型
- 序列的操作方法
- 索引调用
- 切片运算符
- 扩展切片运算符
- 序列元素的反转
- 连接操作符
- 重复运算符
- 成员关系符
- 序列内置方法
- len 获取序列对象的长度
- zip 混合两个序列对象
- enumerate 枚举出序列对象的元素
- sorted 序列的排序
- reversed 返回一个逆序访问的迭代器
- min 取出sequence中的最小值
- max 取出sequence中的最大值
- sum 计算序列中的各项元素和
- all 检测sequence中各项元素是否均为True
- any 检测sequence中的任意项是否为True
- 字符串String
- 让Str支持Unicode
- capitalize 将字符串首字母变成大写
- lowerupper 将字符串都使用小写大写
- title 将字符串中单词的首字母变成大写其余小写
- index 找到substring对应的元组的索引号
- join 将String插入到序列的元素之间
- replace 替换String中的元素
- split 将string以指定的分隔符分裂成列表
- strip 修剪在String两端的Char
- 最后
前言
在Python数据结构篇中介绍了Python的序列类型数据结构,这次继续深入的学习序列和String类型对象的内建方法。
软件环境
- 系统
- UbuntuKylin 14.04
- 软件
- Python 2.7.3
- IPython 4.0.0
序列类型
序列类型,即由整数进行索引的对象的有序集合。其中又可以分为下面两类:
可变序列:列表,支持元素的插入、删除、替换
不可变序列:元组、字符串
序列的操作方法
序列本质上是由索引对象来指向内存中的数据对象,所以序列数据对象都支持迭代方式,也都能够支持下列几种操作。
索引调用
In [1]: li = [1,2,'name']In [2]: li[0]
Out[2]: 1In [3]: tp = (1,2,'name')In [4]: tp[1]
Out[4]: 2In [6]: str = 'Jmilk'In [7]: str[2]
Out[7]: 'i'
切片运算符
sequenceName[x:y] ⇒ 切割出由索引X到y-1之间的元素。
注意:索引均由0开始。而且序列的切片操作会返回一个生成一个新的对象,不会让原序列发生改变。
In [12]: li[:3]
Out[12]: [1, 2, 'name']In [13]: li[1:3]
Out[13]: [2, 'name']In [14]: tp[1:3]
Out[14]: (2, 'name')In [15]: str[1:3]
Out[15]: 'mi'
扩展切片运算符
sequenceName[x:y:stride] ⇒ 除了切割除x到y-1直接的元素,再对这些元素以stride-1的步进(间隔)进行挑选。
扩展切片运算符能够支持步进。即获取下一个索引之间的间隔。
In [16]: str = 'My name is Jmilk!'In [21]: str[1:10:2]
Out[21]: 'ynm s'
首先切割除第2到10个元素(空格也算一个),再每隔1个元素挑选一个元素。
序列元素的反转
序列的索引还可以是负数,-1指向序列的最后一个元素,以此类推。Example:
In [30]: str[-1]
Out[30]: '!'In [31]: tp[-1]
Out[31]: 'name'
还有下面两种有趣的玩法:
反转序列
In [27]: str
Out[27]: 'My name is Jmilk!'In [28]: str[::-1]
Out[28]: '!klimJ si eman yM'
倒转删除元素
In [33]: str[:-2]
Out[33]: 'My name is Jmil'
删除了倒数第1到第2个元素。
连接操作符
连接操作符’ + ‘,可以将若干个同类型的序列对象连接到一起。
In [1]: str = 'My name is 'In [2]: name = 'Jmilk'In [3]: str + name
Out[3]: 'My name is Jmilk'In [4]: name = ['Jmilk']In [5]: str + name
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-5-894081027c0a> in <module>()
----> 1 str + nameTypeError: cannot concatenate 'str' and 'list' objects
如果使用连接操作符处理两个不同类型的序列,会出现类型错误。
重复运算符
重复运算符’ * ‘,能够让被操作数重复的n次,并生成一个新的同类型序列。
In [16]: star = '*'In [17]: star * 10
Out[17]: '**********'In [18]: star = ['*','*']In [19]: star * 10
Out[19]:
['*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*']
成员关系符
成员运算符 in\not in 能够判断一个指定对象是否是作为一个容器中的元素,由此来判断两个对象间的关系。在Python运算符一篇中有详细的介绍,传送门:http://blog.csdn.net/jmilk/article/details/48666475
In [333]: li = [1,2,3]In [334]: 1 in li
Out[334]: TrueIn [335]: 1 not in li
Out[335]: False
序列内置方法
注意:建议在学习一个方法之前,先使用help()函数来查看方法的使用说明文档,其中参数类型可能为iterable迭代器。iterable迭代器分为下面3类:
1.所有的序列类型list、str、tuple。
2.非序列类型dict、file。
3.自定义的任何包含__iter__()或__getitem__()方法的类的对象。
即函数参数中包含iterable,表示可以传递迭代器类型实参。
len() 获取序列对象的长度
序列对象的长度,即序列对象元素的个数
In [39]: name = 'Jmilk'In [40]: len(name)
Out[40]: 5
zip 混合两个序列对象
将两个序列对象索引相同的两个元素结合成元组,以较短的程度为准。
In [54]: str
Out[54]: ['my', 'name', 'is', 'Jmilk']In [55]: name
Out[55]: 'Jmilk'In [56]: zip(name,str)
Out[56]: [('J', 'my'), ('m', 'name'), ('i', 'is'), ('l', 'Jmilk')]
enumerate() 枚举出序列对象的元素
enumerate(sequence[,start = 0])接收一个序列类型的参数,返回由每一对索引号和元素组成的元组。可以指定索引的起始位置。
In [86]: for i,word in enumerate(name,2):print i,word....:
2 m
3 y
4
5 n
6 a
7 m
8 e
9
10 i
11 s
12
13 j
14 m
15 i
16 l
17 k
sorted() 序列的排序
sorted(iterable, cmp=None, key=None, reverse=False) –> new sorted list
iterable:待排序的对象
cmp(x,y):指定一个定制的能够比较两个接收到的参数的函数,默认为None,即内建的比较函数。
key(x):指定一个接收一个参数的函数,用作在每个元素中提取一个关键值作为比较值,缺省为None比较每个元素。
reverse:False为默认正序排列,True为逆序排列。
注意:没有__getitem__属性的对象,如:int类型是不能调用key和cmp函数的。
注意:在Python中有许多内建的函数需要指定一个定制的函数,如:map()、filter()、reduce()、包括sorted等,这种时候使用lambda匿名函数将会非常的方便。
排序效率:key 、reverse > cmp 。因为cmp函数进行多次的两两比较,而key、reverse对每个输入记录只会被调用一次。
Key函数:以第二个关键字为比较值排序
In [205]: li = [('a',3),('b',2),('c',1)]In [208]: sorted(li,key = lambda keyword:keyword[1])
Out[208]: [('c', 1), ('b', 2), ('a', 3)]
cmp函数:以第二个关键字为比较值排序
In [213]: sorted(li,cmp = lambda x,y:cmp(x[1],y[1]))
Out[213]: [('c', 1), ('b', 2), ('a', 3)]
reverse:逆序排列
In [216]: sorted(li,lambda z,x:cmp(z[1],x[1]),reverse=True)
Out[216]: [('a', 3), ('b', 2), ('c', 1)]
reversed() 返回一个逆序访问的迭代器
In [84]: for word in reversed(name):print word,....:
k l i m j s i e m a n y m
min() 取出sequence中的最小值
In [43]: min(str)
Out[43]: ' 'In [44]: min(li)
Out[44]: 1
若元素是String类型的化会转换为ASCII码计算后再比较。
max() 取出sequence中的最大值
类似min()方法。
sum() 计算序列中的各项元素和
注意:sum()方法不支持元素为String或Char类型的序列。
In [59]: num = [1,2,3,4]In [60]: str = 'My name is Jmilk'In [61]: sum(num)
Out[61]: 10In [62]: sum(str)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-62-3a5f0824550a> in <module>()
----> 1 sum(str)TypeError: unsupported operand type(s) for +: 'int' and 'str'
会触发类型错误,不支持的运算数类型
all() 检测sequence中各项元素是否均为True
全True则Truw
In [63]: num = [1,2,3,'']In [64]: all(num)
Out[64]: FalseIn [65]: num = [1,2,3,True]In [66]: all(num)
Out[66]: True
注意:所以的空值序列对象都是False
any() 检测sequence中的任意项是否为True
有True则True
In [67]: num = [1,2,3,'']In [68]: any(num)
Out[68]: True
字符串String
让Str支持Unicode
In [64]: name = u"My name is JMilk"In [65]: name
Out[65]: u'My name is JMilk'
下面介绍适用于字符串的内建方法。
capitalize() 将字符串首字母变成大写
In [88]: str = 'my name is jmilk'In [89]: str.capitalize()
Out[89]: 'My name is jmilk'
lower()、upper() 将字符串都使用小写、大写
In [90]: str.lower()
Out[90]: 'my name is jmilk'In [91]: str.upper()
Out[91]: 'MY NAME IS JMILK'
title() 将字符串中单词的首字母变成大写,其余小写
In [92]: str.title()
Out[92]: 'My Name Is Jmilk'
index() 找到substring对应的元组的索引号
S.index(sub [,start [,end]]) -> int 在start-end的范围内找到substring对应的索引号,再返回一个int类型对象。
In [92]: str.title()
Out[92]: 'My Name Is Jmilk'In [93]: str.title().index('J',2,13)
Out[93]: 11
当在指定范围内没有查询到substring时,会触发ValueError: substring not found
的错误。同时可以看出,String类型对象调用了其内建方法后仍是String类型。
join() 将String插入到序列的元素之间
S.join(iterable) -> string 传递一个序列参数,会将String对象插入到序列的元素之间。即将序列的元素以String为分隔符连接起来,string对象可以为空。
In [103]: li = ['a','b','c']In [104]: str
Out[104]: 'my name is jmilk'In [105]: str.join(li)
Out[105]: 'amy name is jmilkbmy name is jmilkc'
replace() 替换String中的元素
S.replace(old, new[, count]) -> string
将String中的元素替换为指定的新元素,还可以指定替换的数量。
In [113]: url = 'www.jmilk.com'In [114]: url.replace('jmilk','fan')
Out[114]: 'www.fan.com'
split() 将string以指定的分隔符分裂成列表
S.split([sep [,maxsplit]]) -> list of strings
输入指定的分割符和分割次数两个参数。
In [117]: url.split('.',2)
Out[117]: ['www', 'jmilk', 'com']In [118]: url = 'www.jmilk.com'In [119]: url.split('.',2)
Out[119]: ['www', 'jmilk', 'com']In [120]: url.split('.',1)
Out[120]: ['www', 'jmilk.com']
strip() 修剪在String两端的Char
S.strip([chars]) -> string or unicode
将String两端的Chars去掉,并不能去掉String中间的subString
In [124]: url.strip('w')
Out[124]: '.jmilk.com'In [125]: url.strip('m')
Out[125]: 'www.jmilk.co'In [126]: url.strip('om')
Out[126]: 'www.jmilk.c'
最后
同样是序列对象一份子的List类型,一样有着非常多有意思的内置方法,我们下回再继续学习。
Jmilk
Python_序列对象内置方法详解_String相关推荐
- Python_List对象内置方法详解
目录 目录 前言 软件环境 列表List 修改列表的元素 插入列表元素 extend 将序列中的元素迭代的附加到list中 insert 在指定的索引号中插入一个元素 删除列表元素 del 删除Lis ...
- python的装饰器迭代器与生成器_python3 装饰器、列表生成器、迭代器、内置方法详解等(第四周)...
前言: 为什么要学习python3? 原因: 1.学习一门语言能力 2.通过该语言能力完成测试自动化以及独立完成自测框架知识 那么我要做什么呢? 1.每天花十个小时完成python3的学习 要在什么地 ...
- 序列内置方法详解(string/list/tuple)
一.常用方法集合 1.1.string,字符串常用方法 以下举例是python2.7测试: 函数名称 作用 举例 str.capitalize() 字符串第一个字符如果是字母,则把字母替换为大写字母. ...
- python列表的内置方法_Python内置方法详解
1. 字符串内置方法详解 为何要有字符串?相对于元组.列表等,对于唯一类型的定义,字符串具有最简单的形式. 字符串往往以变量接收,变量名.可以查看所有的字符串的内置方法,如: 1> count: ...
- for循环与内置方法详解
''' for循环与内置方法详解 ''' # 循环:重复(按照某种规律的)做一件事情# lt = [1, 2, 3, 4] # # ind = 0 # # while True: # print(lt ...
- 数字内置方法详解(int/long/float/complex)
一.常用方法 1.1.int 以下是Python2.7的int内置函数: 序号 函数名 作用 举例 1 int.bit_length() 二进制存储这个整数至少需要多少bit(位). >> ...
- python3 内置函数详解
内置函数详解 abs(x) 返回数字的绝对值,参数可以是整数或浮点数,如果参数是复数,则返回其大小. # 如果参数是复数,则返回其大小.>>> abs(-25) 25>> ...
- Python内置函数详解——总结篇
引 言 国庆期间下定决心打算学习Python,于是下载安装了开发环境.然后问题就来了,怎么开始呢?纠结一番,还是从官方帮助文档开始吧.可是全是英文啊,英语渣怎么破?那就边翻译边看边实践着做吧(顺便 ...
- Python基本语法_集合set/frozenset_内建方法详解
目录 目录 前言 软件环境 可变集合Set set函数创建集合 创建空集合 集合元素的唯一性 集合推导式 set类型对象的内置方法 add增加一个元素 remove删除一个元素 pop随机删除并返回一 ...
最新文章
- Python3和Raspberry Pi最全面最直接的课程
- MAP 最大后验——利用经验数据获得对未观测量的点态估计
- php连接电脑,PHP_深入理解php的MySQL连接类,无意间在电脑里发现还有这么 - phpStudy...
- JAVA顺序表的简单实现
- 软工实践——团队作业需求规格说明书——原型UI设计
- 制做任意大小的bmp,并在其中写汉字
- mysql可以偏移注入_access数据库一般注入方法及偏移注入
- 数据结构之图的应用:关键路径
- linux如何停止死循环脚本,Linux Shell教程(一)
- js 去空格 和 获得字节数
- 用c语言实现打印日历
- matlab:圆形的图像识别(二)
- 一直用破解软件?可以试试学生优惠!
- 关于MUI一个很实用的前端框架
- matlab ascii显示,matlab ASCII 格式导入
- 生病吃什么水果你知道吗?
- sketch-code让草图秒变HTML
- MySQL#Update语句
- p720自带的磁带机备份aix系统
- 北京大额股票配资 北京股票金融配资
热门文章
- C# json解析字符串总是多出双引号_在JavaScript应用中将CSV转换为JSON
- 详细设计 英文_人体工程学设计:COMMA感应式无线充电器深度拆解
- 大脑如何编码视觉信息?动态电极到图像(DETI) 映射技术也许有助于我们揭示其原理...
- eeglab中文教程系列(16)-Time/Frequency decomposition
- [unreal4入门系列之六] 常用的按键和快捷键
- android this context,Android應用開發中關於this.context=context的理解
- inovance变频器说明书参数设置_学会西门子与台达变频器通讯,仅需要这4个步骤,你造嘛...
- 算法工程师特大福利 | 不用买云了!这里GPU计算资源免费送!
- PHP str_word_count
- 如何用R和API免费获取Web数据?