Python二级题目解析
1、题目
原有列表s = [5, 2, 9, 1],下列哪个操作不能使得列表s变为[9, 5, 2, 1]?( )【2021.06】
- A.
s.sort()
s.reverse()
print(s)
- B.
s.sort(reverse=True)
print(s)
- C.
print(sorted(s, reverse=True))
- D.
s.sort()
print(s)
2、讲解
关注:青少年编程竞赛交流公众号
3、答案
标准答案:D【商榷】
试题解析:
(1)list.sort函数解析
list.sort(key=None, reverse=False)
:对原列表进行排序。
key
:指定可迭代对象中的一个元素来进行排序,通常是一个函数。reverse
:参数指定以升序(False,默认)还是降序(True)进行排序。- 该方法没有返回值,但是会对列表的对象进行排序。
【例子】普通用法
x = [123, 456, 789, 213]
x.sort()
print(x)
# [123, 213, 456, 789]
x.sort(reverse=True)
print(x)
# [789, 456, 213, 123]
【例子】制定参数 key 的用法
# 获取列表的第二个元素
def takeSecond(elem):
return elem[1]
x = [(2, 2), (3, 4), (4, 1), (1, 3)]
x.sort(key=takeSecond)
print(x)
# [(4, 1), (2, 2), (1, 3), (3, 4)]
x.sort(key=lambda a: a[0])
print(x)
# [(1, 3), (2, 2), (3, 4), (4, 1)]
(2)sorted函数解析
sorted(iterable, key=None, reverse=False)
:对所有可迭代的对象iterable
进行排序操作,返回重新排序的列表。
iterable
:可迭代对象。key
:指定可迭代对象中的一个元素来进行排序,通常是一个函数。reverse
:参数指定以升序(False
,默认)还是降序(True
)进行排序。- 返回重新排序的列表。
【例子】普通用法
x = [-8, 99, 3, 7, 83]
print(sorted(x))
# [-8, 3, 7, 83, 99]
print(sorted(x, reverse=True))
# [99, 83, 7, 3, -8]
【例子】通过 key 的值来进行数组/字典的排序
t = ({"age": 20, "name": "a"},
{"age": 25, "name": "b"},
{"age": 10, "name": "c"})
x = sorted(t, key=lambda i: i["age"])
print(x)
# [{'age': 10, 'name': 'c'},
# {'age': 20, 'name': 'a'},
# {'age': 25, 'name': 'b'}]
【例子】多列排序
d1 = [{'name': 'alice', 'score': 38},
{'name': 'bob', 'score': 18},
{'name': 'darl', 'score': 28},
{'name': 'christ', 'score': 28}]
l = sorted(d1, key=lambda t: (-1*t['score'], t['name']))
print(l)
# [{'name': 'alice', 'score': 38},
# {'name': 'christ', 'score': 28},
# {'name': 'darl', 'score': 28},
# {'name': 'bob', 'score': 18}]
【例子】对字符串中的关键字排序
test1 = ['data2/test1/8973.jpg',
'data2/test1/8974.jpg',
'data1/test1/8976.jpg',
'data1/test1/8975.jpg']
imgs = sorted(test1
, key=lambda x: int(x.split('.')[-2].split('/')[-1])
)
print(imgs)
# ['data2/test1/8973.jpg',
# 'data2/test1/8974.jpg',
# 'data1/test1/8975.jpg',
# 'data1/test1/8976.jpg']
(3)sort 与 sorted 区别
list.sort()
是应用在 list 上的方法,sorted()
可以对所有可迭代的对象进行排序操作。- list 的 sort 方法的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回一个新的 list,而不是在原来的基础上进行的操作。