数据类型--索引和切片(字符串、元祖、列表适用)

序列:

字符串,列表,元祖都被称为序列类型数据(可迭代、可被for循环的)

 

索引和切片的概念:
1、索引同样可以是负数,位置是从序列尾开始计算的。因此,shoplist[-1]表示序列的最后一个元素而shoplist[-2]抓取序列的倒数第二个项目。


2、切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割。
注意这与你使用的索引操作十分相似。记住数是可选的,而冒号是必须的。

3、切片操作符中的第一个数(冒号之前)表示切片开始的位置,第二个数(冒号之后)表示切片刀那里结束。如果不指定第一个数,python就从序列首开始。如果没有指定第二个数,则python会停止序列尾。

注意:
返回的序列从开始位置开始,刚好在结束位置之前结束。即开始位置是包办在序列切片中的,而结束位置被排斥在切片外。(顾头不顾尾)
shoplist[1:3]返回从位置1开始,包括位置2,但是停止在位置3的一个序列切片,因此返回一个含有两个项目的切片。
shoplist[:]返回整个序列的拷贝。你可以用负数做切片。
负数用在从序列尾开始计算的位置。例如:shoplist[:1]会返回除了最后一个项目包含所有项目的序列切片。

 

索引:

例如:a='abcde'  每个符号都有自己的一个数据位置,可以通过索引来找到独立的字母位置,在abcde的字母中的数据位置分别为01234。可以使用下面语法进行提取数据位置:

1 >>> a='abcde'
2 
3 >>> a[0]
4 'a'
5 
6 >>> a[1]
7 'b'

但是当需要提取2个字符串位置的时候这时就会出现报错:

 1 >>> a[0][1]
 2 
 3 Traceback (most recent call last):
 4 File "<stdin>", line 1, in <module>
 5 IndexError: string index out of range
 6 
 7 
 8 或者,连续提取两个字母时报错:
 9 >>> a[0]a[1]
10   File "<stdin>", line 1
11     a[0]a[1]
12         ^
13 SyntaxError: invalid syntax

如果想要提取2个字符串位置可以使用 '+'进行连接:

1 >>> a[0]+a[1]
2 'ab'

 

切片

由于每个字符都有自己的索引,可以通过索引提取字符串的一个范围。
语法:a [ 起始值 :结束值:步长:[方向值(-1)] ]
语法:a [ 从第几位开始:到第几位结束:每隔几位取一次值:[方向值(-1)] ]

 1 1、从前面开始取一直到第四位:
 2 >>> a[:4]
 3 'abcd'
 4  
 5  
 6 2、从第四个开始取值
 7 >>> a[4:]
 8 'e'
 9  
10  
11 3、从第二个开始去到最后
12 >>> a[2:]
13 'cde'

 

步长值

每隔多少个字符取一次值。

语法:a [ 起始值 :结束值:步长:[方向值(-1)] ]
语法:a [ 从第几位开始:到第几位结束:每隔几位取一次值:[方向值(-1)] ]

 1 1、每隔1个字符取值
 2 >>> a[::1]
 3 'abcde'
 4  
 6 2、每隔2个字符取值
 7 >>> a[::2]
 8 'ace'
 9  
11 3、每隔3个字符取值
12 >>> a[::3]
13 'ad'
14  
16 4、通过负数的方式取值:
17 从倒数第一位取值
18 >>> a[-1]
19 'e'
20  
22 5、从倒数第二位取值
23 >>> a[-2]
24 'd'
25 
26 >>> a[-4:-1]
27 'bcd'

 

反向取值

步长不包含本身。需要提前取值。
python默认是从左向右取值。一般不用负数取值,但是如果是反向取值,还是需要用负数。

语法:a [ 起始值 :结束值:步长:[方向值(-1)] ]
语法:a [ 从第几位开始:到第几位结束:每隔几位取一次值:[方向值(-1)] ]

1 >>> a[-1:-3:-1]
2 'ed'
3 
4 >>> a[-1:-5:-1]
5 'edcb'
6 
7 >>> a[-1:-6:-1]
8 'edcba'
posted @ 2017-12-13 15:48  风之岚翔  阅读(748)  评论(0编辑  收藏  举报