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

Python遍历列表随机交换元素时出现索引越界错误求解

问题分析与修复

错误根源

  • 随机索引越界:random.randint(1, len(lst)) 会生成1到10的整数(当前len(lst)为10),但列表的有效索引范围是0到9,当随机值取到10时必然触发索引越界错误。
  • 循环变量误用:for i in lst 遍历的是列表的元素值而非索引。虽然初始元素刚好和索引对应,但交换后如果元素值超出索引范围(比如后续修改列表结构),会直接导致索引错误,这是潜在的逻辑漏洞。

修复代码

import random

p = 0.5  # 替换成你的目标概率值
lst = [x for x in range(10)]

# 遍历列表索引而非元素
for i in range(len(lst)):
    # 生成0到列表长度-1之间的合法随机索引
    random_index = random.randint(0, len(lst)-1)
    if random.random() <= p:
        lst[i], lst[random_index] = lst[random_index], lst[i]

核心修改说明

  1. 改用for i in range(len(lst))遍历列表索引,确保i始终是合法的索引值。
  2. 将随机索引的范围修正为0到len(lst)-1,彻底避免生成超出列表边界的索引。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:33:46