类中的Python列表切片不工作
我之前一直在用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
是不包括在内的:你会选择从 i
到 j - 1
的所有元素。