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时,从大到小排序

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]

图片描述


SheenStar
168 声望26 粉丝

祝你坚强