【发布时间】:2018-04-29 18:45:41
【问题描述】:
关于以下代码的几个问题,用于查找列表是否已排序:
为什么我们在这里使用 lambda 作为键?是否总是意味着可以导出列表的键?
在枚举循环中,为什么我们比较key(el) < key(lst[i])而不是key(el) <key(el-1)或lst[i+1] <lst[i]?
def is_sorted(lst, key=lambda x:x):
for i, el in enumerate(lst[1:]):
if key(el) < key(lst[i]): # i is the index of the previous element
return False
return True
hh=[1,2,3,4,6]
val = is_sorted(hh)
print(val)
(注意:以上代码取自this SO answer)
【问题讨论】:
-
我不明白你的第三个问题。将 key(el) 与自身进行比较有什么意义?
-
@DanielRoseman - 编辑了一些被截断的文本。
-
那是因为列表切片使索引移位。如果你问我,这是一种笨拙的做法。
-
@ekhumoro - 我正在寻找解决方案,这是一些教程给我的解决方案。我正在寻找更符合逻辑的东西来记住。
-
所以你有一个问题,而不是告诉我们你找到的解决方案..这听起来像xy-problem - 你想解决什么问题?
标签: python python-3.x python-2.7 list