如何用最小值交换最大值? (蟒蛇)

时间:2014-06-04 14:21:11

标签: python max swap min

是否有一种方法可以交换列表的最大值和最小值?

列表如下,程序必须继续,以便打印最小交换的最小值,第二个最大值与第二个最小值交换,第三个最大值与第三个最小值交换。

EG。输入input- 0 1 2 3 4 5 6 7 8 9 -1 输出 - 9873456210

a = []
nums = raw_input("Enter input- ")
for n in nums.split():
    n = int(n)
    if n < 0:
        break
    a.append(n)
if len(a)<7:
    print "please enter more than 7 integers"

3 个答案:

答案 0 :(得分:1)

python中没有这方法。您可以尝试使用原始方法使用列表构建所需内容。

此代码完成工作:

#!/usr/bin/python
a = []
b = []
nums = raw_input("Enter input- ")
#append all to a list
for n in nums.split():
    n = int(n)
    if n < 0:
        break
    a.append(n)

#get the maximums
b = list(a)
first_max = max(b)
b.remove(first_max)
second_max = max(b)
b.remove(second_max)
third_max = max(b)

#get the minimums
b = list(a)
first_min = min(b)
b.remove(first_min)
second_min = min(b)
b.remove(second_min)
third_min = min(b)

## now swap 
xMax, yMax, zMax = a.index(first_max), a.index(second_max), a.index(third_max)
xMin, yMin, zMin = a.index(first_min), a.index(second_min), a.index(third_min)
a[xMax], a[xMin] = a[xMin], a[xMax]
a[yMax], a[yMin] = a[yMin], a[yMax]
a[zMax], a[zMin] = a[zMin], a[zMax]

print a

答案 1 :(得分:1)

我假设列表中没有重复的值。然后,您可以构建一个新的排序列表,以查找最低和最高的数字。

之后,您从排序列表中取相应的值,在原始列表中找到它们的索引并交换它们。

data = list(range(10))
helper = sorted(data)
for i in range(3):
    low_value = helper[i]
    high_value = helper[-(i+1)]
    low_index = data.index(low_value)
    high_index = data.index(high_value)
    print(low_index, high_index)
    data[low_index], data[high_index] = data[high_index], data[low_index]
print(data)

答案 2 :(得分:-3)

检查this

>>> sorted(student_tuples, key=itemgetter(2), reverse=True)
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]