Per the documentation, await will:
Suspend the execution of coroutine on an awaitable object.
You're in a coroutine, but a list is not awaitable, it isn't "a coroutine or an object with an __await__() method."
Note that the list comprehension is fully evaluated, resulting in a list, before it gets passed to await, so there's no work left to be done at that point anyway. If you were doing something more complex than num**2 inside the loop, you could consider rewriting the process as an "asynchronous iterator" and using async for, as follows:
async def trivial(L):
result = []
async for item in process(L):
result.apend(item)
This would allow other pending tasks to be run between iterations of your process over L.