【问题标题】:list[-1:] returns last value, but is not == last value? [closed]list[-1:] 返回最后一个值,但不是 == 最后一个值? [关闭]
【发布时间】:2017-02-09 14:39:36
【问题描述】:

我对编码还是很陌生,因为我已经编码了几天。我正在尝试通过从事一个小型个人项目来自学python。我一直在玩列表切片,但有些东西不适合我,这阻碍了我正在尝试制作的功能。

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

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

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

【问题讨论】:

  • list2[-1:] -> ['hello'],不知道你从哪里得到olist2[0][-1] -> olist2[0] 也是 "hello" 不是 h
  • 您使用了错误的语法。在 -1 之后删除“:”。
  • @Lagerbaer 语法没问题; list2[-1:] 的报告值为'o' 不正确。
  • 啊,我没有发现他的索引和初始化过程中发生的所有奇怪的额外内容
  • @quesadyllan,而不是创建看起来像是来自 python shell 的输入/输出,您实际上应该使用 python shell。如果你这样做了,你就不会问这个问题了。

标签: python list indexing slice


【解决方案1】:

我猜你的意思是

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

在这种情况下,

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

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

【讨论】:

    【解决方案2】:

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


    pythpm 中的列表语法是[from:to:stepsize]。 如果你省略其中任何一个,其余的都暗示着“有意义”的事情。例如,

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

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

    【讨论】:

    • list2[::-1] -> ['hello'],你切片一个列表,你得到一个列表。
    • 啊。我被 OPs 奇怪的列表初始化吓倒了,它只是没有意义
    • 这个问题没有任何意义。
    猜你喜欢
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    相关资源
    最近更新 更多