如何反转列表中的子列表?

Tam*_*211 9 python function list sublist

我应该创建一个函数,该输入是一个列表和两个数字,该函数反转子列表,其位置由两个数字表示.例如,这是它应该做的:

>>> lst = [1, 2, 3, 4, 5] 
>>> reverse_sublist (lst,0,4) 
>>> lst  [4, 3, 2, 1, 5]
Run Code Online (Sandbox Code Playgroud)

我创建了一个函数并且它可以工作,但我不确定它是否已经到位.这是我的代码:

def reverse_sublist(lst,start,end):
    sublist=lst[start:end]
    sublist.reverse()
    lst[start:end]=sublist
    print(lst)
Run Code Online (Sandbox Code Playgroud)

fla*_*kes 20

def reverse_sublist(lst,start,end):
    lst[start:end] = lst[start:end][::-1]
    return lst
Run Code Online (Sandbox Code Playgroud)

  • 这不是就地反转,它会在切片创建新列表时使用额外的内存。 (5认同)
  • @flakes这会花费内存O(k)吗?k =子串的长度.或者它逐个交换O(1)? (3认同)
  • 当然,即使是最狂热的切片符号粉丝也可以在这种情况下使用"反转"?;-) (2认同)
  • 我认为这需要是`lst [start:end + 1] = lst [start:end + 1] [:: - 1]`否则,正确的解决方案.+1 (2认同)

Ign*_*ams 0

...我不确定它是否就位。

...

lst[start:end]=sublist
Run Code Online (Sandbox Code Playgroud)

是的,它就位了。lst永远不会反弹,只是它的对象发生了变化。

  • 也就是说,不要就地修改东西:( (3认同)