类中的Python列表切片不工作

1 投票
4 回答
820 浏览
提问于 2025-04-17 09:42

我之前一直在用Python,后来放下了,现在很高兴又回来了。我想访问一个列表中的前两个元素,但我总是只能得到第一个元素,而拿不到第二个。

下面是我在Python命令行中的操作。看起来当我使用[i:j],而且j=i+1的时候,我只得到了第一个元素。这是正常现象吗?

>>> p=['ho','he','hoo']
>>> p
['ho', 'he', 'hoo']
>>> p[0:1]
['ho']
>>> p[1:0]
[]
>>> p[0:1]
['ho']
>>> p[1]
'he'
>>> p[0:3]
['ho', 'he', 'hoo']
>>> p[0:2]
['ho', 'he']
 >>> p[0:3]
['ho', 'he', 'hoo']
>>> p[1:2]
['he']

我使用的Python版本是:

Python 3.2 (r32:88445, 2011年2月21日, 21:11:06) [GCC 4.6.0 20110212 (Red Hat 4.6.0-0.7)] 在linux2上

我的Linux是Centos,内核版本是

Linux Fedora 2.6.41.4-1.fc15.x86_64 #1

4 个回答

2

是的,这就是正确的行为。根据文档的说明:

从 i 到 j 的切片是指那些索引 k 满足 i 小于等于 k 小于 j 的一系列项目。

3

在Python中,切片(slices)使用的是一个包含起始位置的索引和一个不包含结束位置的索引。想了解更多,可以查看文档。所以:

>>> list = [0, 1, 2, 3, 4]
>>> i = 2
>>> j = 3
>>> # remember that lists are zero based
>>> print list[i:j] # includes 2 and up to, but not 3
[2]
>>> print list[i:j+1] # includes 2 and up to, but not 3+1
[2,3]
7

p[i:j] 这个表达式中,j 是不包括在内的:你会选择从 ij - 1 的所有元素。

撰写回答