Melhor método para alterar uma lista enquanto iterar sobre ela [duplicado]

Esta questão já tem uma resposta aqui:

Como remover itens de uma lista durante a iteração? 23 respostas

Eu tenho várias instâncias em um script python (v2.6) onde eu preciso modificar uma lista no local. Eu preciso estourar valores da lista em resposta à entrada interativa do usuário e gostaria de saber o método mais limpo de fazer isso. Atualmente eu tenho as soluções muito sujas de a) definir itens na lista que eu quero remover para False e removê-los com um filtro ou compreensão de lista ou b) gerando uma lista inteiramente nova ao passar pelo loop, que parece ser desnecessariamente adicionando variáveis ​​ao namespace e ocupando memória.

Um exemplo desse problema é o seguinte:

<code>for i, folder in enumerate(to_run_folders):
    if get_size(folder) < byte_threshold:
        ans = raw_input(('The folder {0}/ is less than {1}MB.' + \
                    ' Would you like to exclude it from' + \
                    ' compression? ').format(folder, megabyte_threshold))
        if 'y' in ans.strip().lower():
            to_run_folders.pop(i)
</code>

Eu gostaria de ver cada pasta na lista. Se a pasta atual for menor que um determinado tamanho, quero perguntar ao usuário se deseja excluí-lo. Se o fizerem, pop a pasta da lista.

O problema com essa rotina é que, se eu percorrer a lista, obtenho um comportamento inesperado e uma finalização antecipada. Se eu percorrer uma cópia cortando, o pop não puxa o valor correto porque os índices são deslocados e o problema aumenta à medida que mais itens são exibidos. Eu tenho uma necessidade de ajuste de lista dinâmica deste tipo em outras áreas do meu script também. Existe algum método limpo para esse tipo de funcionalidade?

questionAnswers(5)

yourAnswerToTheQuestion