小编Pat*_*ick的帖子

迭代时更改列表的最佳方法

我在python脚本(v2.6)中有几个实例,我需要在其中修改列表.我需要从列表中弹出值以响应用户的交互式输入,并且想知道最干净的方法.目前我有一个非常脏的解决方案:a)将列表中的项目设置为我要删除为False并使用过滤器或列表推导删除它们或b)在循环中生成一个全新的列表,这似乎是不必要的将变量添加到命名空间并占用内存.

这个问题的一个例子如下:

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)
Run Code Online (Sandbox Code Playgroud)

我想查看列表中的每个文件夹.如果当前文件夹小于特定大小,我想询问用户是否要将其排除.如果是,请从列表中弹出文件夹.

这个例程的问题是,如果我遍历列表,我会得到意外的行为并提前终止.如果我通过切片迭代副本,pop不会拉出正确的值,因为索引被移动并且问题在弹出更多项时会复合.我还需要在我的脚本的其他区域中进行此类动态列表调整.这种功能有什么干净的方法吗?

python loops dynamic

10
推荐指数
1
解决办法
8132
查看次数

标签 统计

dynamic ×1

loops ×1

python ×1