day7自定义排序

"""
sort 与 sorted 区别:
    sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
    list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

sorted():默认是由小到大排序列表的元素。
排序排序:sorted(reverse=True)
"""
a = [36, 5, 12, 9, 21]
# print(sorted(a))
# print(sorted(a,reverse=True))
# print(a)
#
# print(a.sort())
# print(a)

"""
打印结果:
[5, 9, 12, 21, 36]
[36, 5, 12, 9, 21]
None
[5, 9, 12, 21, 36]
"""

# 默认是按照第一个名字进行排序的
score = [('Alice', 72), ('Candy', 90), ('Bob', 62)]
print(sorted(score))    # [('Alice', 72), ('Bob', 62), ('Candy', 90)]

"""
sorted接受key参数,用来指定排序的字段,key的值是一个函数,接受待排序列表的元素作为参数,并返回对应需要排序的字段。
因此,sorted()函数也是高阶函数。
"""
# 指定排序的字段为分值
def k(item):
    return item[1]  # 按成绩排序,成绩是第二个字段

print(sorted(score, key=k))


"""
练习:
对字符串排序时,有时候忽略大小写排序更符合习惯。请利用sorted()高阶函数,实现忽略大小写排序的算法。
输入:['bob', 'about', 'Zoo', 'Credit']
输出:['about', 'bob', 'Credit', 'Zoo']
"""
names = ['bob', 'about', 'Zoo', 'Credit']
# l = []
# for name in names:
#     name = name.lower()
#     l.append(name)
# print(l)

def k(name):
    return name.lower()     # 把元素转换为小写字母来排序,但是实际的返回还是原元素

s = sorted(names, key=k)
print(s)

 

posted @ 2023-03-09 00:14  雪儿来  阅读(11)  评论(0编辑  收藏  举报