【问题标题】:Reverse a set of list elements and store it to the list?反转一组列表元素并将其存储到列表中?
【发布时间】:2017-06-03 10:14:23
【问题描述】:

这个问题的逻辑或代码是什么? reverse() 函数不带任何参数,list[::-1] 也一样。怎么轻松搞定?

示例,给定:

list = [1,5,4,3,2,6]

反转 5...2,输出将是:

list = [1,2,3,4,5,6]

【问题讨论】:

  • 投了很多票!为什么?
  • 不要使用list作为变量名,你会隐藏一个内置的function

标签: python python-2.7 list reverse


【解决方案1】:

编辑:对不起,我误解了你的问题。

>>> l = [1, 5, 4, 3, 2, 6]
>>> temp = l[1:5]
>>> temp.reverse()
>>> l[1:5] = temp
>>> l
>>> [1, 2, 3, 4, 5, 6]

【讨论】:

  • 不是 OP 想要的。
【解决方案2】:

您可以将列表的切片反向重新分配给同一切片

l = [1,5,4,3,2,6]
l[1:5] = l[1:5][::-1]
print(l)
#[1, 2, 3, 4, 5, 6]

【讨论】:

  • 我觉得l[1:5] = reversed(l[1:5]) 更容易阅读,但原则上是一样的。
  • l[4:0:-1] 会比l[1:5][::-1] 更高效,因为它只会创建一次新列表。
  • @eugeney 我考虑这样做,但我认为索引相同更好。
【解决方案3】:

您可以使用列表切片分配,它会就地修改列表:

>>> L = [1, 5, 4, 3, 2, 6]
>>> L[1:5] = L[4:0:-1]  
>>> L
[1, 2, 3, 4, 5, 6]

【讨论】:

    【解决方案4】:

    你可以这样做:

    l = [1,5,4,3,2,6]
    index5 = l.index(5)
    index2 = l.index(2)
    l[index5:index2+1] = l[index2:index5-1:-1]
    

    如果你想让它更明确,你可以使用reversed:

    l[index5:index2+1] = reversed(l[index5:index2+1])
    

    【讨论】:

    • 谁对这个答案投了反对票,你能解释一下原因吗?
    • 没有投反对票,但可能是因为它仅适用于具有独特元素的列表。不像其他建议的答案那样是一个通用的解决方案。
    • 我真的很震惊:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2018-07-20
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多