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

Python自定义swap函数交换列表元素仅替换不互换问题求助

问题原因
  • 核心逻辑缺陷:你当前的swap函数仅执行了一次赋值操作mylist[x] = mylist[y],执行这一步时mylist[x]的原始值会被直接覆盖,没有提前保存该值用于回写mylist[y]的位置,最终两个索引位置的值都会等于原本的mylist[y],也就是你观察到的重复d的问题。
  • 复用性缺陷:函数内部直接引用全局变量mylist,只能针对这一个列表做交换操作,无法复用到其他列表场景。
修改方案

方案1:临时变量存储原始值(全语言通用写法)

先把要交换的其中一个值提前存到临时变量,避免被覆盖后丢失:

def swap(lst, x, y):
    # 存储x位置的原始值
    temp = lst[x]
    lst[x] = lst[y]
    lst[y] = temp

mylist = ["a", "b", "c", "d"]
swap(mylist, 2, 3)
print(mylist)

运行输出:['a', 'b', 'd', 'c'],符合预期。

方案2:Python元组解包语法(更简洁的原生写法)

Python原生支持无需临时变量的元素交换操作,语法更简洁:

def swap(lst, x, y):
    lst[x], lst[y] = lst[y], lst[x]

mylist = ["a", "b", "c", "d"]
swap(mylist, 2, 3)
print(mylist)

运行效果和方案1完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:45:03