```
class Solution(object):
def moveZeroes(self, nums):
"""
You need to keep track of zero_pos to implement in-place swap
"""
zero_pos = 0
# need to keep track of zero_pos
for i in range(len(nums)):
if nums[i] == 0:
zero_pos = i
break
# start moving non-zeros to left
for i in range(zero_pos, len(nums)):
if nums[i]:
nums[i], nums[zero_pos] = nums[zero_pos], nums[i] # swap
zero_pos += 1 # update zero position
# if nums[i] is zero, do nothing.
```