Do you mean to remove a condition `len(...) == 0`? On Python 2.7, when `taken` list is empty:
```
>>> init = 'available = list(range(100)); taken = set([])'
>>> timeit.timeit('[x for x in available if x not in taken]', init, number=100000)
0.8178679943084717
>>> timeit.timeit(
... 'available if len(taken) == 0 else [x for x in available if x not in taken]',
... init, number=100000)
0.02421283721923828
```
having a condition makes a great difference and it does not add much overhead when the list is not empty:
```
>>> init = 'available = list(range(100)); taken = set([i * 2 for i in range(50)])'
>>> timeit.timeit('[x for x in available if x not in taken]', init, number=100000)
0.7203500270843506
>>> timeit.timeit(
... 'available if len(taken) == 0 else [x for x in available if x not in taken]', 
... init, number=100000)
0.7752180099487305
```
I suggest leaving this one as it is. :)

I was also wondering if converting list to a set would make a great difference:
```
>>> init = 'available = list(range(100)); taken = [i * 2 for i in range(50)]'
>>> timeit.timeit(
... 'taken = set(taken); available if len(taken) == 0 else [x for x in available if x not in taken]', 
... init, number=100000)
0.9225449562072754
>>> timeit.timeit(
... 'available if len(taken) == 0 else [x for x in available if x not in taken]', 
... init, number=100000)
7.294498920440674
```