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

Python使用range类型遍历列表偶数索引替换元素问题排查

问题说明

使用Pythonrange类型处理列表时出现逻辑偏差,代码第二部分的预期需求如下:

  • 定位列表所有偶数索引位置(索引从0开始计数)
  • 计算规则:索引值 × 对应位置存储字符串的长度
  • 用计算结果替换偶数索引位置的原有元素,奇数索引位置元素保持不变
  • 预期运行效果参考:

    original list: ['computer', 'science', 'university', 'alberta', 'edmonton']
    modified list: [0, 'science', 20, 'alberta', 32]

当前存在问题的实现代码:

lista = []
word = input('Enter a word >')
while word != 'stop':
    lista.append(word)
    word = input('Enter a word >')
print(lista)

for index in range(0, len(lista), 2):
    lista[index] = index
    index *= len(str(word))
    print(lista)
错误点排查

原有代码共有4处核心逻辑问题:

  1. 赋值顺序颠倒:先把列表对应位置直接赋值为裸索引值,再做乘法计算,完全跳过了「乘以对应位置字符串长度」的要求
  2. 取值对象错误:计算长度时调用的是输入循环结束后最后一次存储的word变量(也就是终止输入的'stop'),不是当前遍历到的偶数索引位置存储的列表元素
  3. 无效操作:for循环的迭代变量index是临时值,直接修改index本身不会回写到列表里,属于无意义操作
  4. 冗余输出:循环内每次迭代都打印全列表,不符合最终输出原始列表、修改后列表的需求
正确实现方案
lista = []
word = input('Enter a word >')
while word != 'stop':
    lista.append(word)
    word = input('Enter a word >')

print(f'original list: {lista}')
# 步长设为2遍历所有偶数索引
for index in range(0, len(lista), 2):
    # 直接取当前索引位置的字符串算长度,计算完成后回写到对应位置
    lista[index] = index * len(lista[index])

print(f'modified list: {lista}')

用参考样例验证计算逻辑:

  • 索引0:0 * len('computer') = 0*8 = 0
  • 索引2:2 * len('university') = 2*10 = 20
  • 索引4:4 * len('edmonton') = 4*8 =32
    计算结果和预期输出完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:30:54