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

按索引遍历列表:用for循环简化实验中多矩形(含目标矩形)创建代码

没问题,咱们用带索引的循环来重构这段代码,既能简化结构,又能让逻辑更清晰,完全符合你想要节省开发时间和代码空间的需求。

首先,利用Python的enumerate()函数,它能在遍历列表时同时拿到元素索引和对应的坐标值,刚好可以用来区分目标矩形(索引0)和其他普通矩形。直接上重构后的代码:

# 初始化一个列表用来存储所有矩形(方便后续实验操作,可选)
all_rectangles = []

# 遍历打乱后的坐标列表,同时获取索引和坐标
for idx, coord in enumerate(xy_list):
    # 判断当前是否是目标矩形(对应原代码中的xy_list[0])
    if idx == 0:
        # 创建目标矩形,沿用你定义的样式
        current_rect = visual.Rect(
            win=mywin4,
            width=45,
            height=90,
            pos=coord,
            lineColor='white',
            fillColor='blue',
            ori=orientations_list[1]
        )
    else:
        # 创建普通矩形,这里可以根据你的实验需求调整样式
        # 示例:白色边框、无填充,方向可以用默认或对应列表值
        current_rect = visual.Rect(
            win=mywin4,
            width=45,
            height=90,
            pos=coord,
            lineColor='white',
            fillColor=None
            # 如果普通矩形需要不同方向,可改成 ori=orientations_list[idx]
        )
    
    # 绘制当前矩形
    current_rect.draw()
    # 把矩形存入列表,方便后续交互(比如点击检测、位置更新等)
    all_rectangles.append(current_rect)

为什么这么写?

  1. 统一逻辑:把目标矩形和普通矩形的创建、绘制逻辑合并到一个循环里,不用单独写目标矩形的代码块,减少冗余。
  2. 灵活扩展:如果后续要调整矩形样式(比如修改尺寸、颜色),只需要在循环里修改对应部分即可,不用逐个修改单独的代码。
  3. 可复用性:存入all_rectangles列表后,后续实验中可以轻松通过索引访问目标矩形(all_rectangles[0])或其他任意矩形,方便做交互逻辑(比如判断被点击的是哪个矩形)。

如果不需要存储矩形,也可以去掉all_rectangles相关的代码,只保留循环内的创建和绘制部分,代码会更精简。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:40:46