Python实现将元素依次append到list1、list2等多列表的自动化方案
原有代码存在的问题
- 语法错误:Python不支持
place{counter}这种直接用格式化字符串当变量名的写法,无法通过语法校验 - 未定义变量:代码中判断条件用到的
places没有提前定义,运行会直接报错 - 逻辑冗余:已经生成了固定的
place随机值,完全不需要额外加while循环做匹配,属于无效代码 - 命名不匹配:你的目标列表命名为list1、list2、list3,代码中写的placeX和目标列表名完全对不上
- 边界错位:你生成的随机数范围是1~5,counter从0开始循环,会出现0值和你的列表编号对应不上的问题
正确实现方式
更推荐用嵌套列表的方式管理多个目标列表,比动态调用变量名更易维护,代码如下:
import random # 索引0占位,方便和1~5的随机数直接对应,索引1~5分别对应list1~list5 list_container = [[], [], [], [], [], []] for person in population_list: # 跳过空person if not person: continue place = random.randint(1, 5) list_container[place].append(person) # 后续需要取list1的内容直接访问list_container[1]即可
如果你确实需要保留独立的list1~list5变量,可以通过全局变量字典调用:
import random # 提前定义好独立的列表变量 list1 = [] list2 = [] list3 = [] list4 = [] list5 = [] for person in population_list: if not person: continue place = random.randint(1, 5) globals()[f"list{place}"].append(person)
内容的提问来源于stack exchange,提问作者R0Best
相关产品推荐
相关产品推荐

