今天是信息合格考,本人是某考点最后一场(13:20场),刚考完,有感,写篇小记.
本文已经同步在Wechat Moments中
论最后一题一共有多少种写法
本人抽到的试卷最后一题的大意是给出一个level
数组,求里面有多少项是‘良’.
先给出最标准做法,即按照倒数第二题里面流程图来写:
i = 0
while i < len(level):
if level[i] == '良':
num += 1
i = i + 1
当然,使用for
也是可以的:
for i in level:
if i == '良':
num = num + 1
这时候,学过信竞的同学就开始作妖了.我们都知道,i == '良'
返回的是bool
类型,它是可以和int
相加减的,于是就有了:
for i in level:
num += (i == '良')
当然,以上两种写法都可以简写为一行代码,分别是
num = len([i for i in level if i == '良'])
和
num = sum([i == '良' for i in level])
还有一种利用列表推导式的方法是:
[num := num + 1 for i in level if i == '良']
但这种方法运用了海象运算符,这在Python 3.10之前是没有的,于是在考试的机子上只能这么写:
def add():
global num
num += 1
return 114514
[add() for i in level if i == '良']
但这些都只是在level
数组上进行操作,我们注意到赋值语句level = list(df['空气质量'])
,这是天赐良机.我们知道df['空气质量']
是一个标准的pd.Series
类型,这让我们有了进一步操作的空间:
num = df['空气质量'].value_counts()['良']
这种方法也是成功的得到了预期结果.
大家还有什么奇怪的写法也可以在评论区分享出来.
顺带分享一件轶事:出考场的时候,在路上拾取到了某薛姓同学的身份证,现已移交另一同学家长保管.
最后了解一下,大家那道https://192.168.2.3:5050/display
都填出来了吗?