【发布时间】:2021-10-16 00:56:39
【问题描述】:
我发现了这个 edabit 挑战 (link to challenge):
创建一个函数,该函数接受一个数字列表 lst、一个字符串 s 并按照以下规则返回一个数字列表:
"Asc" 返回一个按升序排列的列表。 "Des" 返回一个按降序排列的列表。 "None" 返回一个没有任何修改的列表。
有人 Evgeny SH 提出了这个解决方案:
def asc_des_none(lst, s):
return sorted(lst, reverse=s == 'Des') if s else lst
你能解释一下 sorted(...) 部分的工作原理吗?提前致谢!
【问题讨论】:
-
你知道
s == 'Des'是做什么的吗?你知道reverse=True做什么吗?你知道reverse=False做什么吗?将其分解为足够简单,以便我们确切地知道您在阅读时遇到了什么问题。 -
sorted带一个reverse参数,可以接收一个布尔值(False 或True)` 当s=='Des'为True 时,则reverse设置为True,排序将是下降。在其他情况下,参数值为 False,但当s为None时,它从不计算表达式的那部分;只有else部分。 -
顺便说一句,这段代码不符合规范:它不尊重
None。 -
如果你输入
"None"而不是None会失败,但是很有趣 -
我不喜欢该代码中使用的格式。
reverse=(s == 'Des')会更清楚。