常见的序列的操作:索引,切片,相加,相乘,成员资格检查

1、索引

索引代表它在序列中的位置,第一个索引是0,第二个是1,以此类推,计算机吧,常见的数字就是0和1嘛,用一个字符串来感受一下索引。

>>> char='Hello'
>>> char[0]
'H'
>>> char[1]
'e'
>>> char[2]
'l'
>>> char[3]
'l'
>>> char[4]
'o'
......

从上看出,一般取元素,都是从左到右,编号从0,1,2,3,4,等等,这是正着取,也可以倒着取,不信,你看

>>> char='Hello'
>>> char[-1]
'o'
>>> char[-2]
'l'
>>> char[-3]
'l'
>>> char[-4]
'e'
>>> char[-5]
'H'
>>>

从右往左取的时候,索引从-1开始,没有0,而0代表的是正,从左到右,这样一看,如果你们想要取一个字符串或者列表开头和结尾的元素,快速方便,就是list[0]和list[-1],不用再考虑它的长度。

2、切片

由上文可知,索引是用来访问单个元素的,那是否有可以一下子访问多个元素呢,当然肯定是有的,切片就是滴,切片通过冒号相隔的两个索引实现,看看下面的例子:

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

由以上可知,分片即支持正数索引,也支持负数索引,分片[a:b]的取值范围 a =< x < b,这边a和b都是有值的,如果没有值呢,会怎么取呢,如下所示:

>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> number[1:5]
[2, 3, 4, 5]
>>> number[:5]  --如果第一个索引值没有,则从头开始取值
[1, 2, 3, 4, 5]
>>> number[:]    --开始值和结束值都没有,则取全部元素
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> number[1:]   --第二个索引值没有,则从第一个元素开始取,取到最后
[2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>

2.1 步长

其实,分片的正确格式[a:b:c],a和b是索引位置,c是步长,在分片中,步长的默认长度是1,你也可以单独设置步长,如下所示

>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> number[2:5]
[3, 4, 5]
>>> number[2:5:1]
[3, 4, 5]
上面[2:5]和[2:5:1]取值一样,直接说明默认步长是1
>>> number[2:5:2]
[3, 5]
>>> number[::2]  
[1, 3, 5, 7, 9]
>>>

3.序列相加,其实序列相加,也就是序列的拼接,python中的序列相加:只支持相同数据类型的相加,否则会报错

>>> a = [1, 2, 3, 4, 5]
>>> b = [6, 7]
>>> a + b
[1, 2, 3, 4, 5, 6, 7]
>>> 'a' + 'b'
'ab'
>>> 'a' +1
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    'a' +1
TypeError: must be str, not int
>>>

4.序列相乘

>>> 'a' * 5
'aaaaa'
>>> 'I Love YOU ' * 2
'I Love YOU I Love YOU '
>>>

其实,序列相乘,跟咱们想象的数值相乘是不太一样的,它是将这个序列重复X次

5.成员资格检查,就是判断要检查的值是否存在某序列中

>>> 'I' in 'I love You'
True
>>> 'love' in 'I love You'
True
>>> 'HeNan' in 'I love You'
False
>>>