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

列表元素前缀筛选问题(仅用循环,禁用第三方库)

问题解决:筛选符合条件的前缀

问题背景

给定列表:

info =['0-0-0-0-0-4-0', '0-0-0-1-0-4-2', '0-0-3-0-0-80-0', '0-0-3-1-0-81-0', '0-0-3-0-0-82-0']

需要筛选出满足以下条件的前缀(元素的前7个字符,如0-0-3-0)对应的元素:

  • 该前缀在列表元素中出现至少2次;
  • 对应元素的第11-12位数值(如80、82)互不相同。
    要求仅用循环实现,不能导入任何库。

用户代码问题

用户编写的代码输出infolist为空,代码如下:

info =['0-0-0-0-0-4-0', '0-0-0-1-0-4-2', '0-0-3-0-0-80-0', '0-0-3-1-0-81-0', '0-0-3-0-0-82-0']

infolist = []

for n in info
    if info.count(n[0:7]) > 1
        if n not in infolist
            infolist.append(n)
        end
    end
end

Print(infolist)

问题分析

  1. 语法错误:Python的for循环、if语句末尾必须加冒号:,而且Python没有end关键字,这段代码根本无法运行,自然输出空列表。
  2. 逻辑缺失:原代码只判断了前缀出现次数,完全没处理第二个条件——对应数值互不相同的要求;另外用info.count()每次全列表扫描统计次数,效率也很低。

正确实现代码

info =['0-0-0-0-0-4-0', '0-0-0-1-0-4-2', '0-0-3-0-0-80-0', '0-0-3-1-0-81-0', '0-0-3-0-0-82-0']

# 统计每个前缀的出现次数和对应的数值集合
prefix_stats = {}
for item in info:
    prefix = item[:7]
    # 提取第11-12位的数值(索引从0开始,对应位置10、11)
    num = int(item[10:12])
    
    if prefix not in prefix_stats:
        prefix_stats[prefix] = {'total': 0, 'values': set()}
    prefix_stats[prefix]['total'] += 1
    prefix_stats[prefix]['values'].add(num)

# 筛选符合条件的元素
result = []
for item in info:
    prefix = item[:7]
    stats = prefix_stats[prefix]
    # 前缀出现至少2次,且对应的数值不重复(集合长度大于1)
    if stats['total'] >= 2 and len(stats['values']) > 1:
        result.append(item)

print(result)

代码说明

  • 先用字典prefix_stats统计每个前缀的出现次数,同时用集合存储对应数值(集合自动去重,方便判断数值是否互不相同);
  • 再次遍历原列表,检查每个元素的前缀是否满足两个条件,满足则加入结果列表;
  • 全程只用循环和基础数据结构,没有导入任何库,符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:15:27