电子学会青少年编程等级考试Python二级题目解析01

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,而不是在原来的基础上进行的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青少年编程备考

感谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值