【问题标题】:python slicing strings vs lists: inclusive/noninclusive slice index [duplicate]python切片字符串与列表:包含/非包含切片索引[重复]
【发布时间】:2016-10-27 09:58:12
【问题描述】:

假设我正在切片一个列表和一个字符串:

num_list = [1, 2, 3, 4]
print(num_list[2:]) # => [3, 4]

text_string = 'This is a test string'
print(text_string[5:] # => 'is a text string'

所以,当我对列表进行切片时,第一个切片索引是包含的,但是当我对字符串进行切片时,切片索引不包含的。这是什么情况?为什么字符串切片不遵循列表切片出现的相同规则集?

我对列表切片的理解是左切片索引总是包含的,而右切片索引只有在留空时才包含。

【问题讨论】:

  • 包容/不包容是什么意思?
  • num_list[2] => 3 / text_string[5] => 'i'。没有区别。
  • 字符串和列表的索引相同。 Python 中的索引从零开始。
  • 我不明白你在说什么。 3 是列表的索引 2,切片从那里开始; i 是字符串的索引 5,切片从那里开始。切片总是半开的;较低的索引是包含的,较高的索引是排除的。
  • 不,你根本没有证明这一点。切片按照您的预期工作,您误解了您所看到的结果。索引从零开始,切片包括 start 但不包括 end

标签: python arrays string list slice


【解决方案1】:

它们的行为完全相同。

由于某种原因,您希望列表的索引从 0 开始并且
字符串的索引从 1 开始。

事实上它们都是从 0 开始的。

正如 @Mark 在 cmets 中所建议的那样,stringslists 从 Python 文档中索引。

【讨论】:

【解决方案2】:

但它是一样的! 在每个元素之前插入索引: [0=1,1=2,2=3,3=4][2:] 表示:从索引 2 到结束 [0=T,1=h,2=i,3=s,4= ,5=i,6=s,...][5:] 表示:从索引 5(在本例中为字母 'i')直到结尾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 2019-01-29
    • 2015-05-21
    • 2011-10-24
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 2019-05-23
    相关资源
    最近更新 更多