Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:为什么用于交换最大和最小数字的代码不是';不行吗?_Python_List - Fatal编程技术网

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