You could sort the list:
a.sort(key=lambda v: v != 0)
The key
function tells Python to sort values by wether or not they are 0
. False
is sorted before True
, and values are then sorted based on their original relative position.
For 0
, False
is returned, sorting all those values first. For the rest True
is returned, leaving sort to put them last but leave their relative positions untouched.
Demo:
>>> a = [4, 5, 0, 0, 6, 7, 0, 1, 0, 5]
>>> a.sort(key=lambda v: v != 0)
>>> a
[0, 0, 0, 0, 4, 5, 6, 7, 1, 5]
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…