'Select item from a list like random.choice() does, but not randomly

I know this might be a silly question. But on this notebook there is the following piece of code:

import random

assignments_to_add = []
for _, row in routes.iterrows():
    worker = random.choice(workers)
    workers.remove(worker)
    route_stops = stops.loc[(stops['RouteName'] == row["RouteName"]) & stops['globalid'].notnull()]
    for _, stop in route_stops.iterrows():
        assignments_to_add.append(workforce.Assignment(
            project,
            assignment_type="Inspection",
            location=stop["name"],
            status="assigned",
            worker=worker,
            assigned_date=datetime.now(),
            due_date=stop["DepartTime"],
            geometry=stop["SHAPE"]
        ))
assignments = project.assignments.batch_add(assignments_to_add)

The workers in worker = random.choice(workers) is a list. So, I cant find the way to not make it random. I want the code to pick the item of the list in order as it is on the list. How could I do this?

Thanks



Solution 1:[1]

You have a few options for this.

List indexing:

worker = workers[0]
del workers[0]

.pop():

worker = workers.pop(0)
# pop removes item from list and assigns to worker

next():

#convert list to iterator
w_iter = iter(workers)
# anytime you need the next worker, call the following line
worker = next(workers)

Also consider looping through workers:

for worker in workers:
    do_something()

Maybe the easiest for you:

for i, row in routes.iterrows():
    worker = workers[i]

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 blackbrandt