在python中,-1是什么意思?

2024-04-19 06:57:11 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
The Python Slice Notation

我正在尝试将一些Python代码移植到C中,但是我遇到了这一行,我无法理解它的含义:

if message.startswith('<stream:stream'):
    message = message[:-1] + ' />'

我知道如果message<stream:stream开头,则需要附加一些内容。不过,我似乎不知道应该把它附加在哪里。我完全不知道:-1表示什么。我在谷歌上搜索了几次都没有结果。

有人能解释一下这是怎么回事吗?


Tags: the代码内容messagestreamifslice含义
3条回答

它是列表索引,返回除最后一个元素以外的所有元素[:]。类似问题here

例如

>>> a = [1,2,3,4,5,6]
>>> a[:-1]
[1, 2, 3, 4, 5]

它是这样工作的

a[start:end]

>>> a[1:2]
[2]

a[start:]

>>> a[1:]
[2, 3, 4, 5, 6]

a[:end]
你的案子

>>> a = [1,2,3,4,5,6]
>>> a[:-1]
[1, 2, 3, 4, 5]

a[:]

>>> a[:]
[1, 2, 3, 4, 5, 6]

它被称为切片,它返回除了最后一个元素之外的message的所有内容。

理解这一点的最好方法是举例说明:

In [1]: [1, 2, 3, 4][:-1]
Out[1]: [1, 2, 3]
In [2]: "Hello"[:-1]
Out[2]: "Hell"

您始终可以用任意数字替换-1

In [4]: "Hello World"[:2] # Indexes starting from 0
Out[4]: "He"

不包括最后一个索引。

它叫slicing

“返回表示范围(开始、停止、步骤)指定的索引集的切片对象。”
-从这个链接:http://docs.python.org/2/library/functions.html#slice

您会注意到它类似于range参数,:部分返回整个iterable,因此-1是除最后一个索引之外的所有内容。

以下是切片的一些基本功能:

>>> s = 'Hello, World'
>>> s[:-1]
'Hello, Worl'
>>> s[:]
'Hello, World'
>>> s[1:]
'ello, World'
>>> s[5]
','
>>>

以下是这些论点:

a[start:stop:step]

或者

a[start:stop, i] 

相关问题 更多 >