【问题标题】:How to loop a list in reverse order and skip last element如何以相反的顺序循环列表并跳过最后一个元素
【发布时间】:2019-03-10 11:08:07
【问题描述】:

我知道我可以让for i in x[::-1]: 以相反的顺序遍历列表。但是如果我想跳过最后一个元素然后从高到低遍历呢? for i in x[-1:0:-1] 不起作用

x = [1,2,3,4,5]
=> 4,3,2,1         #  desired

for i in x[-1:-1]:
    print(i)

# it does not work

【问题讨论】:

  • 你可以使用这个:x[-2::-1]
  • 快速提问是否要使用shortand for if elif 语句而不使用else?

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


【解决方案1】:

您需要从-2 开始,因为-1 从最后一个元素开始:

for i in x[-2::-1]:
    print(i)

或者,您可以将reversed 与列表切片一起使用:

for i in reversed(x[:-1]):
    print(i)

【讨论】:

    【解决方案2】:

    你可以像这样使用双切片

    for i in x[::-1][1:]:
        print(i)
    

    【讨论】:

      【解决方案3】:

      去掉for循环后可以反转:

      for i in x[:-1][::1]:
          print(i)
      

      【讨论】:

        【解决方案4】:

        涉及列表切片的答案可能是最好的,但也可以通过枚举来完成。

        x = [1, 2, 3, 4, 5]
        for index, value in enumerate(reversed(x)):
            val = value-1
            if val:
                print(val)
        

        同样,从“大 O”的意义上说,切片答案更好,但看到一些方法来做一件事并没有什么坏处。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-01-01
          • 2014-03-20
          • 2018-06-18
          • 1970-01-01
          • 1970-01-01
          • 2021-12-30
          • 2023-03-19
          • 1970-01-01
          相关资源
          最近更新 更多