180206—【Python 初识 D13】字符串序列:切片、字符串不变性

序列:

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语句,
因为这样可以使你的程序更加易读,也可以避免名称的冲突。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值