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]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。