Python:为什么交换最大和最小数字的代码不起作用?

Max*_*sky 2 python list

想象一下,我们有一个数字列表,a其中所有数字都不同,我们想要交换最大的一个和最小的一个.问题是,为什么这段代码在Python中:

a[a.index(min(a))], a[a.index(max(a))] = a[a.index(max(a))], a[a.index(min(a))]
Run Code Online (Sandbox Code Playgroud)

不工作?

Ste*_*ann 7

为什么会失败?我们a = [1, 2, 3, 4]以此为例.

首先,评估右侧:

a[a.index(max(a))], a[a.index(min(a))]    =>    4, 1
Run Code Online (Sandbox Code Playgroud)

那顺便说一下当然是这样的

max(a), min(a)    =>    4, 1
Run Code Online (Sandbox Code Playgroud)

接下来,分配从左到右发生:

首先,设置a[a.index(min(a))]为4会生成列表[4, 2, 3, 4],因为最小值位于前面.

然后,设置a[a.index(max(a))]为1 [1, 2, 3, 4]再次生成列表,因为最大值已经写在前面,所以现在找到它的位置以及写入1的位置.