180206—【Python 初识 D13】字符串序列:切片、字符串不变性
2018-02-06 23:25
483 查看
序列:
Python中的序列类型基本上了C中的数组类似。序列类型包括:字符串、列表、元组。
它们的成员都是有序排列并可以通过下标偏移量访问(下标规范同C)
特别的序列类型操作符:
成员关系操作符:in,not in可用于判断一个元素是否属于一个序列>>> 'a'in 'abc' True >>> 'd'not in 'abc' True >>>
重复操作符:*
可快速完成对一个序列的多份拷贝:
>>> s='acd!' >>> s 'acd!' >>> s*8 'acd!acd!acd!acd!acd!acd!acd!acd!' >>>
切片操作符 ——[ ],[ : ],[ : : ]
简单说,序列类型无非是包含一些顺序排列的对象的一个结构,我们可以通过下标偏移量访问某一位的元素。而这种方法即是所谓“切片”的一个特殊化
序列类型允许通过指定下标的方式访问某一数据元素;
或者通过指定下表范围来获得一组序列的子集。
s[ a : b ]
表示取s序列中下标从a到b的这一片段,当a,b省略不写时,a位默认为0,b位则默认为n-1,n为s元素个数。
注意:
s[ :4]得到的最后一个是原序列中下标为3,偏移量为4 也就是第4个。
>>> s='abcdefghijklmn' >>> s[0:4] 'abcd' >>> s[1:4] 'bcd' >>>
s[ a : b :c ]
此时c为步长,该切片操作即从a到b,按步长c取元素。(两个元素中间有c-1个元素被略过)
且当步长为-1时可得到翻转的效果:
>>> s[::-1] 'nmlkjihgfedcba' >>> s[::2] 'acegikm' >>>
字符串
字符串是一种序列类型。上述所有问题的举例均以字符串形式给出,已在说明这一点。字符串是一种不可变类型,以下展示一种新的反映该点的方式。
因为字符串是不可变的,所以单独修改字符串的某一部分是不可行的:
如上图,单独修改某一部分会直接得到报错。而整体重新赋值是可以的。
因为(复习):可以给一个字符串重新赋值,但该操作已经改变了这个串的身份(id),别忘记这个串名s只是个标签而已,此时这个串的原值还好好地待在内存里,并未发生任何变化。
如何修改一个字符串?
鉴于字符串的不变性,如果想要修改字符串中的某个或某几个字符,需要采取切片,单独修改的办法:
>>> s='I love python' >>> s 'I love python' >>> s=s[:2]+'hate'+s[8:] >>> s 'I hate python' >>>
P.S.
import与from…import的不同之处:两个语句都表示引入,但是一个表示整体引入类,后一个表示引入类中特定部分模块。之后的区别在于:
假设有类 English,该类中有一函数verb,你只打算调用这个函数。
两种写法需要的区别在:
import English English.verb() import verb from English verb() #省掉前缀
如果你想在程序中用verb代表English.verb,
则可使用:from … import …
一般说来,应该避免使用from..import而使用import语句,
因为这样可以使你的程序更加易读,也可以避免名称的冲突。
相关文章推荐
- python序列的切片操作
- Python数据结构:序列——字符串
- python-13-如何调整字符串中文本的格式?sub函数
- Python核心编程 6.序列:字符串、列表和元组
- Python学习笔记 -- 序列(二)字符串
- Python数据类型——序列(字符串,列表,元组)
- Python序列:字符串、列表和元组(二)
- python:序列:字符串,列表,元组
- python 字符串切片知识巩固
- python对字符串切片
- python浓缩(6)序列: 字符串、列表和元 组
- python学习:字符串切片操作
- python笔记3 - 布尔运算,位运算,字符串 str,转义序列,ASCII编码,len函数,隐式字符串拼接,in & not in 运算符
- python中序列方法与切片实现逆序的简便方法(::-1)
- Python中的字符串序列拼接方法
- 流程的Python 第十章:序列的修改、散列和切片
- Python 字符串切片(slice)
- 【廖雪峰 python教程 课后题 切片】利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法:
- 我与python约个会:17. 字符串详解及序列类型
- 初识python3.0 (1)字符串