I think both are wrong. It looks like you're doing the inner comprehension because you want to avoid recalculating LLSRental.select(). You should rarely need inner comprehensions if you're using comprehensions appropriately, because you can nest them, like
all_the_inputs = [ process_value(x) for y in all_the_stuff for x in y ]
or something. This is a nice but short post which explains this well.
Anyway. Something like
rental_avg_costperweek = 0
for this_id in closest_rental_ids:
rental = LLSRental.select(LLSRental.id == this_id)
rental_avg_costperweek += calcCostPerWeek(rental.price, rental.rental_freq)
rental_avg_costperweek /= len(closest_rental_ids)
seems like a much more appropriate way to do the calculation. I'm actually creating fewer objects than your code does, because I don't have two lists I make for no good reason, whereas your code makes two lists for intermediate calculations and then throws them away.