list [-1:]返回最后一个值,但不是==最后一个值?

时间:2016-09-30 23:13:25

标签: python list indexing slice

我对编码仍然很陌生,就像我编写了几天一样。我试图通过一个小型的个人项目来教自己python。我一直在玩列表切片,但有些东西并没有加起来,这阻碍了我试图制作的功能。

通过在shell中玩游戏(正确的术语?)我推断出:

    >>> list1 = "hello"
    >>> list2 = list(list1)
    >>> list2[-1:]
    >>> 'o'
    >>> list2[-1:] == 'o'
    >>> False
    >>> list2[0]
    >>> 'h'
    >>> list2[0] == 'h'
    >>> True

这是为什么?起初我想是因为list2可能是由另一个列表定义的,它的最后一个索引不会是==到list1&s;因为list1可以重新定义?但后来我尝试了第一个索引,现在我很困惑。

2 个答案:

答案 0 :(得分:1)

我猜你要表现的是

>>> list1 = 'hello'
>>> list1
'hello'
>>> list2 = list(list1)
>>> list2
['h', 'e', 'l', 'l', 'o']

在这种情况下,

>>> list2[-1]
'o'
>>> list2[-1:]
['o']

如您所见,list2[-1:]会返回一个列表,因此它不等于'o'

答案 1 :(得分:-1)

编辑:忽略下面的内容。在您的示例中,list2是一个列表,其中包含字符串" hello"作为元素。这与字符串"你好"。

不同

pythpm中的列表语法是[from:to:stepsize]。 如果你省略其中的任何一项,其余部分都隐含在“有意义的事情”中。例如,

list2[:3] == 'hel'
list2[1:] == 'ello'
list2[::-1] == 'olleh'
最后,如果你没有任何冒号,那么你正在访问一个单一元素。

list2[0] == 'h'
list2[-1] == 'o'