以下反转列表"就地"并在Python 2和3中工作:
>>> mylist = [1, 2, 3, 4, 5]
>>> mylist[:] = reversed(mylist)
>>> mylist
[5, 4, 3, 2, 1]
Run Code Online (Sandbox Code Playgroud)
为什么/怎么样?既然reversed给了我一个迭代器,并且不预先复制列表,并且因为[:]=替换"就地",我很惊讶.以下,也使用reversed,按预期中断:
>>> mylist = [1, 2, 3, 4, 5]
>>> for i, item in enumerate(reversed(mylist)):
mylist[i] = item
>>> mylist
[5, 4, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
为什么不是这样的[:] =失败?
是的,我知道mylist.reverse().
在谈论算法时.我看到了就地和稳定排序算法的描述.是说算法是稳定的,就像说它的原位一样?如果不是有什么区别?