Python - 学习随笔

 【Python - 菜鸟编程】

【字符串-列表】

Python字符串是一个由字符组成的序列,索引0指向第一个元素;

使用负数索引时,python会从右边(最后1个元素)开始计数,最后一个元素的位置索引是-1,第二个是-2,以此类推;

【列表-分片操作】

可以使用分片操作来访问一定范围内的元素:第1个索引是需要提取部分的第一个元素的编号,第2个索引则是分片之后剩下部分的第1个元素的编号;参考如下代码:

>>>numbers = [1,2,3,4,5,6,7,8,9,10]

>>>numbers[3:6]

[4,5,6]

>>>numbers[0:1]

[1]

解析:分片操作的第1个索引是3,那也就是原列表的第4个元素‘4’;分片操作的第2个索引是6,也就是分片之后剩下部分的第1个元素‘7’(因‘7’的索引是6);所以numbers[3:6]分片操作后的结果是[4,5,6]

简而言之,分片操作的实现需要提供两个索引的作为边界,第1个索引的元素包含在分片内,第2个索引不包含在分片内

注意:如果分片操作第1个索引指向的元素比第2个索引指向的元素晚出现(需要区分是从前往后分片还是从后往前进行分片),结果会是一个空的序列。如numbers[-3:0]会得到一个空序列:[]

技巧:如果分片操作需要包含序列结尾的所有元素,只需要置第2个索引值为空即可,如numbers[-3:] -> [8,9,10]; 这样的操作同样适用序列开始的元素numbers[0:3] -> [1,2,3]

【列表-分片操作-设置步长】

分片操作其实会有3个索引值,其中第3个索引值就是步长,默认值是1;例如:numbers[0:10:2] -> [1,3,5,7,9]

步长可以是负数,即从右往左提取元素:numbers[8:3:-1] -> [9,8,7,6,5]; numbers[9:0:-2] -> [10,8,6,4,2]

注意:如从右往左提取元素,若第1个索引值超出索引范围,则分片操作提取的一个元素是原序列的最后一个元素:numbers[9:0:-2]  = numbers[10:0:-2] = numbers[11:0:-2] -> [10,8,6,4,2]

如从左往右提取元素,若第2个索引值超出索引范围,分片操作则提取原序列符合步长要求的最后一个元素:numbers[0:9:2]  = numbers[0:10:2] = numbers[0:11:2] -> [1,3,5,7,9]

【列表-分片操作-赋值】

1、使用分片赋值,可以使用与原序列不等长的序列分片替换

name = list('Perl') -> ['P', 'e', 'r', 'l']

name[1:] = list('ython') -> ['P', 'y', t'', 'h', 'o', 'n']

2、可以在不需要替换任何原有元素的情况下插入新的元素:

>>>numbers = [1, 5]

>>>numbers[1:1] = [2,3,4] 

>>>numbers

[1,2,3,4,5]

3、可以通过分片操作进行元素的删除

>>>numbers=[1,2,3,4,5]

>>>numbers[1:4] = []    # del numbers[1:4]

>>>numbers

[1,5]

【列表-相加操作】

两种相同类型的序列才可以进行相加操作:[1,2,3] + [4,5,6] -> [1,2,3,4,5,6];  [1,2,3] + [‘Hello’] -> [1,2,3,‘Hello’]; [1,2,3] + 'Hello' -> ERROR: 列表和字符串是无法连接在一起,尽管他们都是序列

还可以使用内建函数extend进行连接操作:

>>>a = [1,2,3]

>>>b = [4,5,6]

>>>a.expend(b)

>>>a

[1,2,3,4,5,6]

两者最主要区别在于:extend方法修改了被扩展的序列,而原始的连接操作(+)会创建一个包含了a和b的副本的新序列,连接后再返回一个全新的序列。所以若有如下连接操作则会比extend方法效率低:a = a + b

猜你喜欢

转载自www.cnblogs.com/juicy/p/7777917.html
今日推荐