天天看點

【程式5】清單排序sort

'''

【程式5】清單排序sort

題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。

1.程式分析:我們想辦法把最小的數放到x上,先将x與y進行比較,如果x>y則将x與y的值進行交換,

      然後再用x與z進行比較,如果x>z則将x與z的值進行交換,這樣能使x最小。

'''

'''

知識點

排序:

原型sort(*, key=None, reverse=None) 該函數會改變清單自身元素的排序

reverse設定反序,預設False

key 指定一個key函數,即隻有一個參數(用于傳入清單元素),傳回排序的鍵值的函數,

    該選項預設為None,即排序鍵值為清單元素本身

子產品functools:

用于轉換一個比較函數為一個key 函數,可用于sort這樣的排序函數

該比較函數,接受兩個參數,即比較的兩個元素,小于傳回負數,等于傳回0,大于傳回正數。

'''

#Python3.3.5

import functools

l = []

for i in range(3):

    x = int(input('integer:\n'))

    l.append(x)

l.sort()

print(l)

l.sort(reverse=True)

print(l)

def cmp(ele):

    return ele*ele

def cmp2(ele1,ele2):

    if ele1>ele2: return 1

    elif ele1==ele2:return 0

    else: return -1

k=[1,-4,-3]

k.sort(key=cmp)

print(k)

k.sort(key=functools.cmp_to_key(cmp2))

print(k)

繼續閱讀