如何用Python for循环创建并命名多个排除单个元素的列表
问题原因
你的代码存在3个核心错误:
- 用了Python内置关键字
list作为变量名,会覆盖原生列表类型,引发后续未知错误 remove()是列表原地修改方法,返回值为None,你赋值给全局变量的内容全是空值,根本拿不到过滤后的列表- 遍历列表的同时修改原列表,会导致列表长度动态变化,后续遍历会直接跳过部分元素,无法遍历所有原列表元素
正确实现
如果一定要生成独立的全局列表变量,写法如下:
# 不要用list当变量名,重命名为original_list original_list = ["a", "b", "c", "d", "e", "f", "g"] for item in original_list: # 用列表推导式生成过滤后的新列表,不修改原列表 globals()[f"list_{item}"] = [x for x in original_list if x != item]
更推荐的写法
直接生成字典存所有结果,不会污染全局命名空间,调用更可控:
original_list = ["a", "b", "c", "d", "e", "f", "g"] list_collection = {} for item in original_list: list_collection[f"list_{item}"] = [x for x in original_list if x != item] # 调用示例:print(list_collection["list_a"])
运行后即可得到你需要的所有过滤列表。
内容的提问来源于stack exchange,提问作者Kristina Zhupunova
相关产品推荐
相关产品推荐

