【问题标题】:Slicing lists in pythonpython中的切片列表
【发布时间】:2018-08-31 13:41:11
【问题描述】:

对于切片操作究竟是如何在列表上工作的存在很多困惑。

  • 为什么 [1,2,3,4][::-1] 返回它的反向?

  • 为什么 [1,2,3,4][1:-4] 返回 [] 和 [1,2,3,4][1:-4:-1] 返回 [2] ?

主要问题出现在使用负索引时。

如果有人能告诉我内置模块中 slice 的确切定义,那就太好了。

编辑:为什么 [1,2,3][::-1] 和 [1,2,3][0:3:-1] 有不同的返回值

【问题讨论】:

标签: python-2.7 slice


【解决方案1】:

列表 ['A', 'B', 'C', 'D']

索引从 0 到 size-1。

负索引意味着向后遍历列表:

       negative index   |   positive index
-5   -4   -3   -2   -1  |  0    1    2    3    4
     'A'  'B', 'C', 'D',|['A', 'B', 'C', 'D']

Index > 4 或

切片遵循以下模式:List[from:to:step]

  • step,默认为1,表示在slice中保留哪些索引 它的符号给出了切片的方向
    • 阳性,从左到右,
    • 从右到左为负
  • 从索引开始切片,包括
    • 当步长为正时默认为 0,
    • 当 step 为负数时默认为 -1
  • 索引切片的结束位置,独占
    • 当 step 为正时默认为 size-1,
    • (size-1) 当步长为负时

例子:

['A','B','C','D'][::-1] 表示从右到左,从-1到-(size-1) => ['D', ' C'、'B'、'A']

['A','B','C','D'][1:-4] 表示从第二个元素到第一个元素被排除在一个步骤 => 没有

['A','B','C','D'][1:-4:-1] 表示从第二个元素到第一个元素排除,步长减一,只剩下第二个元素 => [ 2]

当然,最好的办法是在使用前先在样品上试一试。

【讨论】:

  • 为什么 [1,2,3][::-1] 和 [1,2,3][0:3:-1] 不一样?
  • [::-1] 表示从头到尾,步骤 -1 给出尊敬的列表。 [0:3:-1] 表示从开始到结束的步骤 -1 导致空。
  • 这是一个重要的答案。其他语言使用 [start:run length] 并且注意力可能会失效。
  • @vaanchitkaul, [1,2,3][::-1] 和 [1,2,3][-1:-4:-1] 一样的。
猜你喜欢
  • 2010-12-14
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 2015-02-19
  • 2014-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多