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

如何统计列表中单词不同位置指定字母的出现频率?

问题分析与修复代码

先拆解你代码里导致索引越界和逻辑混乱的问题:

  • 你在for s in b循环里先写了s3[i] = s2,但这时候变量i还没定义,属于无效操作;
  • s2初始是空列表,直接访问s2[j]时,空列表没有对应位置的元素,必然触发索引越界;
  • 统计逻辑完全颠倒,没有先给每个位置初始化计数为0,上来就想累加,根本没有基础值支撑。

正确实现思路

  1. 先确定所有单词的长度(假设你的输入单词长度一致,示例里都是3);
  2. 给每个要统计的字母初始化一个全0的计数列表,长度和单词长度一致;
  3. 遍历每个单词,再逐个位置检查,若当前位置的字母是目标字母,就把对应位置的计数加1;
  4. 最后把每个字母和它的计数列表对应起来。

修复后的代码

a = ['ram', 'rah', 'arj']
letters = ['r', 'm']
# 取第一个单词的长度作为统一长度(假设所有单词长度相同)
word_length = len(a[0])
# 初始化结果字典:每个字母对应一个全0的计数列表
freq_result = {char: [0]*word_length for char in letters}

for word in a:
    for idx, char in enumerate(word):
        # 如果当前字符在统计列表内,对应位置计数+1
        if char in freq_result:
            freq_result[char][idx] += 1

# 输出预期格式的结果
for char, counts in freq_result.items():
    print(f"字母{char}的频率是{counts}")

运行结果

字母r的频率是[2, 1, 0]
字母m的频率是[0, 0, 1]

这个代码逻辑清晰,先给每个位置的计数打好基础,再逐个统计,完全符合需求,也不会出现索引越界问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 08:37:29