python只能对列表进行切片_如何使用Python中的变量对列表进行切片

>>> fruits = ['apple', 'banana', 'watermelon', 'strawberry', 'orange']

>>> fruits[0:3] # 获取列表中的前3项

['apple', 'banana', 'watermelon']

>>> fruits[-2:-1] # 使用负数切片

['strawberry']

注意,切片包含索引项的起始值,而不包含结束值。因此,使用切片fruits[0:3]获取的是fruits列表的前3项,如图所示。

resize,m_lfit,w_600,h_800,limit_1

请点击输入图片描述

使用负数切片fruits[-2:-1]获取的是fruits列表的倒数第2项,如图所示。

resize,m_lfit,w_600,h_800,limit_1

请点击输入图片描述

初学者可能会认为切片也包含索引项的结束值,从而获取到错误的切片。例如,尝试获取列表的全部项:

>>> fruits = ['apple', 'banana', 'watermelon', 'strawberry', 'orange']

>>> fruits[0:4] # 错误的切片,只能获取到列表中的前4项

['apple', 'banana', 'watermelon', 'strawberry']

>>> fruits[0:5] # 正确的切片,获取列表的全部项

['apple', 'banana', 'watermelon', 'strawberry', 'orange']

1.1 超出列表范围的切片

如果尝试获取超出列表范围的切片,Python解释器不会报错,而是返回一个空列表:

>>> fruits[100:200]

[]

同样,如果切片中索引项的起始值大于结束值,Python解释器同样不会报错,而是返回一个空列表:

>>> fruits[3:0]

[]

1.2 切片的简写

切片的简写分为以下三种情况:

①省略索引项的起始值,语法格式为“列表名[:结束值]”,与“列表名[0:结束值]”是等价的。

②省略索引项的结束值,语法格式为“列表名[起始值:]”,与“列表名[起始值:列表长度]”是等价的。

③省略索引项的起始值和结束值,即获取列表的全部项,语法格式为“列表名[:]”,与“列表名[0:列表长度]”是等价的。

下面是一些切片简写的示例:

>>> fruits = ['apple', 'banana', 'watermelon', 'strawberry', 'orange']

>>> fruits[:3] # 获取列表中的前3项

['apple', 'banana', 'watermelon']

>>> fruits[-2:] # 获取列表中的后2项

['strawberry', 'orange']

>>> fruits[:] # 获取列表的全部项

['apple', 'banana', 'watermelon', 'strawberry', 'orange']

前文提到过,fruits[-2:-1]获取的是倒数第2项,如果试图获取倒数第1项:

>>> # 这两种方式在此处是等价的

>>> fruits[-1:]

['orange']

>>> fruits[-1:5]

['orange']

1.3 指定切片的步长

在执行切片操作时,可以指定步长,步长的值也用冒号来分隔。步长能够跳过不想要获取的项。为了更容易地看出步长的工作方式,重新创建一个包含从0到9的整数列表:

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

步长的默认值为1,即一个挨着一个,前面使用过的切片全都是这样。下面两种写法是等价的:

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

>>> numbers[:]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> numbers[::1]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

如果指定的步长大于1,那么会跳过一些项。当切片的步长为2时,会跳过1项;当切片的步长为3时,会跳过2项:

>>> numbers[::2]

[0, 2, 4, 6, 8]

>>> numbers[::3]

[0, 3, 6, 9]

索引值可以为负数,同样步长也可以为负数。当步长为负数时,列表从后向前取。当切片的步长为-1时,即为反转列表;当切片的步长为-2时,会反转列表并跳过1项:

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

>>> numbers[::-1] # 步长为-1

[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> numbers[::-2] # 步长为-2

[9, 7, 5, 3, 1]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值