想象一下,我们有一个数字列表,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)
不工作?
为什么会失败?我们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的位置.