【问题标题】:How can I display a list in reverse with 3 colon-separators?如何使用 3 个冒号分隔符反向显示列表?
【发布时间】:2020-09-11 12:33:47
【问题描述】:

如何让第三行和第二行一样?

list = [1,2,3,4,5,6,7,8,9,10]
print(list[::-1])
print(list[-1:0:-1])

这是我得到的结果:

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
[10, 9, 8, 7, 6, 5, 4, 3, 2]

【问题讨论】:

  • s[-1:-len(s)-1:-1]

标签: python python-3.x list slice reverse


【解决方案1】:

这里应该省略 0:

print(list[-1:0:-1])

写成

print(list[-1::-1])

或放置None

print(list[-1:None:-1])

原因是:当你在“3个冒号分隔符”中省略stop值(或替换None)时,this会发生:

如果 ij 被省略或None,它们将成为“结束”值(结束取决于 k 的符号)。

这里的j 对应于停止值(i 是开始,即[i:j:k]

【讨论】:

    【解决方案2】:

    使用None:

    >>> list[-1:None:-1]
    [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    

    >>> list[None:None:-1]
    [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    

    您可以使用-len(list)-1,但None 更简单,不需要任何计算。

    顺便说一句,list 是一个错误的变量名,因为它会影响内置的 list

    【讨论】:

      【解决方案3】:

      您可以使用以下列表切片方式来获得所需的结果。

      list = [1,2,3,4,5,6,7,8,9,10]
      
      #Use Blank:
      print(list[::-1])
      print(list[-1::-1])
      #output
      #[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
      
      #Use None:
      print(list[:None:-1])
      print(list[None:None:-1])
      #output
      #[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
      
      #Use Boolean:
      print(list[-True::-True])
      #output
      #[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
      
      #Use Boolean:
      print(list[~False::-1])
      #output
      #[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
      
      
      #Use of Length function:
      print(list[:-(len(list)+1):-1])
      #output
      #[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-31
        • 2016-03-22
        • 2021-08-16
        • 1970-01-01
        • 2019-02-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多