gpt4 book ai didi

python - 交换列表中的最大值和最小值

转载 作者:行者123 更新时间:2023-11-28 19:46:54 25 4
gpt4 key购买 nike

我需要交换不同数字列表中的最大值和最小值。像这样:

示例输入

3 4 5 2 1

示例输出

3 4 1 2 5

我认为使用它最有意义:

a = [3, 4, 5, 2, 1]
a[a.index(max(a))], a[a.index(min(a))] = min(a), max(a)

但是,它似乎适用于一些不同数字的列表,但不适用于其他列表(包括给定的示例)。我不知道为什么。谁能看到错误?

最佳答案

在多重赋值中,Python 从左到右计算所有右侧部分,然后将它们从左到右一一分配给左侧部分(详见 the language reference)。所以:

a = [3, 4, 5, 2, 1]
a[a.index(max(a))], a[a.index(min(a))] = min(a), max(a)

a = [3, 4, 5, 2, 1]
a[a.index(max(a))], a[a.index(min(a))] = 1, max(a)

a = [3, 4, 5, 2, 1]
a[a.index(max(a))], a[a.index(min(a))] = 1, 5

a = [3, 4, 5, 2, 1]
a[a.index(5)], a[a.index(min(a))] = 1, 5

a = [3, 4, 5, 2, 1]
a[2], a[a.index(min(a))] = 1, 5

a = [3, 4, 1, 2, 1]
a[a.index(min(a))] = 5

a = [3, 4, 1, 2, 1]
a[a.index(1)] = 5

a = [3, 4, 1, 2, 1]
a[2] = 5
# ^ uh oh

a = [3, 4, 5, 2, 1]

如果最小值最大值之前这很好,因为我们总是替换第一次出现的最小值,结果证明是原始值。

要修复它,只需在进行交换之前分别计算索引。

关于python - 交换列表中的最大值和最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49687402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com