python_bomb----排序函數

li.sort()和sorted()

  • 列表裏提供了sort方法,其餘數據類型不能用
    sorted能夠對任何可迭代對象排序
  • sort方法支持原地排序,變量排序後,變量自己改變
    sorted方法返回一個新的列表,並不改變原變量的內容
li = [1,4,76,23,32]
print(li.sort())
-->None
li
-->[1, 4, 23, 32, 76]
li = [1,4,76,23,32]
print(sorted(li))        #不改變原有列表次序
-->[1, 4, 23, 32, 76]
li    
-->[1, 4, 76, 23, 32]

圖片描述

默認li.sort()和sorted()方法由小到大排序,reverse=True時,從大到小排序app

lee = [1,3,6765,454,234,3434,3245]
lee.sort(reverse=True)
print(lee)


[6765, 3434, 3245, 454, 234, 3, 1]
lee = [1,3,6765,454,234,3434,3245]
print(sorted(lee,reverse=True))


[6765, 3434, 3245, 454, 234, 3, 1]

字典排序

store = [
    #商品名稱,數量,價格
    ('apple',40,2),
    ('banana',17,1),
    ('watermelon',12,5),
    ('starwberry',17,10)
]
print(sorted(store))    #默認按關鍵值排序

#按照商品數量排序
#key = 表明排序的關鍵字
def sorten_by_count(x):
    return x[1]

print(sorted(store,key=sorten_by_count))

#先按照商品數量由小到大進行排序,若是商品數量一致,則按照商品價格由小到大進行排序

def sorten_by_count_price(x):
    return x[1],x[2]    #-x[2]商品價格從大到小
print(sorted(store,key=sorten_by_count_price))



[('apple', 40, 2), ('banana', 17, 1), ('starwberry', 17, 10), ('watermelon', 12, 5)]
[('watermelon', 12, 5), ('banana', 17, 1), ('starwberry', 17, 10), ('apple', 40, 2)]
[('watermelon', 12, 5), ('banana', 17, 1), ('starwberry', 17, 10), ('apple', 40, 2)]

圖片描述

按字符串長度排序

l = ['hello','apple','cindy','sheenstar']
print(max(l,key=lambda x: len(x)))

sheenstar

奇偶排序

# 有一個整數列表(10個元素),要求調整元素順序
#   把全部奇數放在前面,偶數放在後面
import random

li = [random.randint(1, 10) for i in range(10)]
print(li)

print(sorted(li, key=lambda x: 1 if x % 2 == 0 else 0))
print(sorted(li,key=lambda x:x%2==0))


[7, 10, 7, 9, 8, 2, 9, 6, 3, 10]
[7, 7, 9, 9, 3, 10, 8, 2, 6, 10]
[7, 7, 9, 9, 3, 10, 8, 2, 6, 10]

圖片描述

相關文章
相關標籤/搜索