ggorlen has the right approach, but just to elaborate for your understanding and others who wanna learn list comprehensions..
First you need to iterate over each of the items in the list -
[item for item in l]
[[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18]]
Next, you have a condition that is applied on the index (position must be 3), but you need to modify the element itself as well. So you need to iterate over both the index and the element together.
[[(i,n) for i,n in enumerate(item)] for item in l]
[[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)],
[(0, 7), (1, 8), (2, 9), (3, 10), (4, 11), (5, 12)],
[(0, 13), (1, 14), (2, 15), (3, 16), (4, 17), (5, 18)]]
Each tuple is (index, element).
Lastly you need your condition. There are multiple ways for using if conditions in a list comprehension, but for your case you need to check the index in the (index, element) tuple and see if it returns a remainder when divided by 3. If yes, then return the element else return 0.
[[n if i%3 else 0 for i,n in enumerate(item)] for item in l]
[[0, 2, 3, 0, 5, 6], [0, 8, 9, 0, 11, 12], [0, 14, 15, 0, 17, 18]]
Hope this explanation helps you with future problems like this.
Cheers.