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

Python实现F1赛车模拟器超车函数:交换列表中车手位置

F1赛车模拟器超车位置交换实现方案

问题根源

你遇到的重复元素问题,本质是临时变量赋值顺序错误或者索引操作逻辑混乱——比如先覆盖了其中一个位置的值,再用这个已被覆盖的值去赋值另一个位置,导致两者变成相同元素。

正确实现方式

方法1:Python原生元组解包交换(最简洁)

直接通过索引交换两个元素,无需额外临时变量,Python会自动处理值的暂存:

# 示例车手列表
drivers = ['hamilton', 'verstappen', 'perez', 'sainz']

# 定义超车者和被超车者
overtaker = 'perez'
overtaken = 'verstappen'

# 获取两者在列表中的索引
idx_overtaker = drivers.index(overtaker)
idx_overtaken = drivers.index(overtaken)

# 核心:交换两个索引对应的元素
drivers[idx_overtaken], drivers[idx_overtaker] = drivers[idx_overtaker], drivers[idx_overtaken]

print(drivers)  # 输出:['hamilton', 'perez', 'verstappen', 'sainz']

方法2:临时变量交换(通用逻辑)

如果你坚持用临时变量,必须先保存其中一个位置的原值,再依次覆盖:

drivers = ['bottas', 'latifi']

overtaker = 'latifi'
overtaken = 'bottas'

idx_overtaker = drivers.index(overtaker)
idx_overtaken = drivers.index(overtaken)

# 先保存被超车者的当前值
temp = drivers[idx_overtaken]
# 把超车者的值放到被超车者的位置
drivers[idx_overtaken] = drivers[idx_overtaker]
# 把保存的原值放到超车者原来的位置
drivers[idx_overtaker] = temp

print(drivers)  # 输出:['latifi', 'bottas']

注意事项

  • 确保超车者的索引大于被超车者的索引(符合现实逻辑:后方车手超车前方车手)
  • 如果存在重名车手(F1场景几乎不可能),建议改用唯一标识(如车手ID)来获取索引,避免index()方法返回错误的匹配项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:55:12