Python:为什么用于交换最大和最小数字的代码不是';不行吗?
假设我们有一个数字列表Python:为什么用于交换最大和最小数字的代码不是';不行吗?,python,list,Python,List,假设我们有一个数字列表a,其中所有数字都是不同的,我们想交换最大的一个和最小的一个。问题是,为什么用Python编写这段代码: a[a.index(min(a))], a[a.index(max(a))] = a[a.index(max(a))], a[a.index(min(a))] 不起作用吗?最好先获取最大值和最小值的索引: i_min, i_max = a.index(min(a)), a.index(max(a)) a[i_min], a[i_max] = a[i_max], a[i
a
,其中所有数字都是不同的,我们想交换最大的一个和最小的一个。问题是,为什么用Python编写这段代码:
a[a.index(min(a))], a[a.index(max(a))] = a[a.index(max(a))], a[a.index(min(a))]
不起作用吗?最好先获取最大值和最小值的索引:
i_min, i_max = a.index(min(a)), a.index(max(a))
a[i_min], a[i_max] = a[i_max], a[i_min]
另一方面,结果可能是不可预测的)为什么失败?让我们以
a=[1,2,3,4]
为例
首先,对右侧进行评估:
a[a.index(max(a))], a[a.index(min(a))] => 4, 1
顺便说一句,这当然和
max(a), min(a) => 4, 1
接下来,作业将发生:
首先,将a[a.index(min(a))]
设置为4会生成列表[4,2,3,4]
,因为最小值在前面
然后,将
a[a.index(max(a))]
设置为1将再次生成列表[1,2,3,4]
,因为最大值已写入前面,所以现在可以在这里找到它,也可以在这里写入1。结果是什么?实际上什么都没有。列表中没有更改。回答得很好!!我知道是这样的,但一直在寻找:P