You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在循环中动态命名空列表以简化数值范围排序代码?

嘿,作为编程新手能想到用动态方式简化重复代码,这个思路超棒!不过直接动态创建list_1020这种变量名其实在Python里并不是最优解——甚至不太推荐,因为会让代码变得难以维护。其实用字典就能完美解决你的问题,而且代码会简洁很多!

为什么不推荐动态创建变量名?

直接通过globals()或locals()动态生成变量名,会污染全局命名空间,调试时很难追踪这些变量的状态,而且没法轻松遍历所有分组,本质上还是没解决代码冗余的问题。

更优雅的解决方案:用字典存储分组

字典的键可以用来表示你的范围(比如"10-20"),值就是对应范围的列表。这样不管有多少个分组,都能统一管理。

方案1:预先定义分组范围

如果你的范围是固定的,比如只需要10-20、20-30、30-40这几个分组,可以这样写:

x = [11,12,21,34,35,36]
# 初始化分组字典,键是范围描述,值为空列表
groups = {
    "10-20": [],
    "20-30": [],
    "30-40": []
}

for num in x:
    if 10 <= num < 20:
        groups["10-20"].append(num)
    elif 20 <= num < 30:
        groups["20-30"].append(num)
    elif 30 <= num < 40:
        groups["30-40"].append(num)

# 查看结果
print(groups["10-20"])  # 输出: [11, 12]
print(groups["20-30"])  # 输出: [21]
print(groups["30-40"])  # 输出: [34, 35, 36]

方案2:动态生成分组(适合数据范围大的情况)

如果你的数据范围不确定,或者分组很多,可以自动计算每个元素对应的分组,动态创建字典的键:

x = [11,12,21,34,35,36,42,55,67]
groups = {}

for num in x:
    # 计算当前数字所在范围的起始值(比如11→10,21→20)
    start_range = (num // 10) * 10
    # 生成分组键,格式为"起始值-结束值"
    group_key = f"{start_range}-{start_range + 10}"
    # 如果这个分组还没创建,就初始化空列表
    if group_key not in groups:
        groups[group_key] = []
    # 将数字添加到对应分组
    groups[group_key].append(num)

# 遍历所有分组并打印结果
for range_desc, nums in groups.items():
    print(f"{range_desc}: {nums}")

运行后输出:

10-20: [11, 12]
20-30: [21]
30-40: [34, 35, 36]
40-50: [42]
50-60: [55]
60-70: [67]

总结

用字典来管理分组列表,既解决了代码冗余的问题,又让代码更易读、易维护。相比动态创建变量名,这种方式是Python里处理这类分组问题的标准做法,强烈推荐你使用~

内容的提问来源于stack exchange,提问作者bruhsmh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:44:07