【问题标题】:How to slice a list from an element n to the end in python?如何在python中将列表从元素n切片到末尾?
【发布时间】:2010-10-11 21:41:53
【问题描述】:

我在弄清楚如何对 python 列表进行切片时遇到了一些麻烦,如下所示:

>>> test = range(10)
>>> test
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> test[3:-1]
[3, 4, 5, 6, 7, 8]
>>> test[3:0]
[]
>>> test[3:1]
[]
>>> test
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

据我了解,python slice 的意思是 lst[start:end],包括 start,不包括 end。那么我将如何从元素 n 开始查找列表的“其余部分”?

非常感谢您的帮助!

【问题讨论】:

    标签: python list sequence slice


    【解决方案1】:

    你正在寻找的是使用类似的东西:

    inputs = "ababbbaAab"
    for i in range(n):
        print(i, inputs[:i] + inputs[i:i+1])
    

    输出:

    0 a
    1 ab
    2 aba
    3 abab
    4 ababb
    5 ababbb
    6 ababbba
    7 ababbbaA
    8 ababbbaAa
    9 ababbbaAab
    

    看看i == 0

    然后inputs[:i] == []inputs[i:i+1] == a

    如果i == len(inputs) - 1

    然后是inputs[:i] == [ababbbaAa]inputs[i:i+1] == b

    【讨论】:

      【解决方案2】:

      您也可以在切片时为 end 参数使用None 关键字。这也将返回直到列表末尾的元素(或任何 sequence,例如元组、字符串等)

      # for list
      In [20]: list_ = list(range(10))    
      In [21]: list_[3:None]
      Out[21]: [3, 4, 5, 6, 7, 8, 9]
      
      # for string
      In [22]: string = 'mario'
      In [23]: string[2:None]
      Out[23]: 'rio'
      
      # for tuple
      In [24]: tuple_ = ('Rose', 'red', 'orange', 'pink', 23, [23, 'number'], 12.0)
      In [25]: tuple_[3:None]
      Out[25]: ('pink', 23, [23, 'number'], 12.0)
      

      【讨论】:

        【解决方案3】:

        当您想跳过某些内容时,省略结尾仍然有效:

        range(10)[3::2] => [3, 5, 7, 9]
        

        【讨论】:

          【解决方案4】:

          在起始值之后返回列表的一部分:

          list = ['a','b','c','d']
          start_from = 'b' # value you want to start with
          slice = list[list.index(start_from):] # returns slice from starting value to end
          

          【讨论】:

            【解决方案5】:

            如果您使用变量作为范围端点,则可以使用None

             start = 4
             end = None
             test[start:end]
            

            【讨论】:

            • 哦,谢谢!我正在寻找这个,但不知道如何搜索它:)。如果没有这个,我觉得接受的答案有点不完整,因为留下一个结束索引是微不足道的并且有足够的文档。
            【解决方案6】:

            您可以通过不指定值使切片的一端保持打开状态。

            test[3:] = [3, 4, 5, 6, 7, 8, 9]
            test[:3] = [0, 1, 2]
            

            【讨论】:

              【解决方案7】:

              简单地省略结尾。

              test[n:]
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-02-10
                • 1970-01-01
                • 2011-06-22
                • 2018-08-17
                • 2017-07-10
                相关资源
                最近更新 更多