您的位置:首页 > 编程语言 > Python开发

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语句,

因为这样可以使你的程序更加易读,也可以避免名称的冲突。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: