I am looking for the efficient function in Python that does sample selection without replacement, but by actually mutating the original list. That is, alternative to this:

```
random.sample(population, k)

```

that removes the elements from the original list as the sample is selected.
List can be millions items large, and there could be potentially tens of subsequent calls to the sample function.

Ideally, I would like to do something like:

```
sample_size_1 = 5   
sample_size_2 = 200   
sample_size_3 = 100   
population = range(10000000)  

sample_1 = select_sample(population, sample_size_1)  #population is shrunk  
sample_2 = select_sample(population, sample_size_2)  #population is shrunk again     
sample_3 = select_sample(population, sample_size_3)  #and population is shrunk again

```

where `population` is efficiently shrunk between each call to select\_sample.

I have some code that I could show here, but I am looking for hopefully something already available, or more "pythonic" than my while loops.