python - 这个排序代码是如何工作的?

标签 python

这个排序代码是如何工作的?我无法理解迭代器返回的值是如何用于对列表进行排序的?

mylist=["zero","two","one"]
list1=[3,1,2]
it = iter(list1)
sorted(mylist, key=lambda x: next(it))

输出:

['two', 'one', 'zero']

最佳答案

它的工作原理是这样的 - key=lambda x: next(it) 部分说明:分配一个订单值 3,然后是 1 然后 2mylist 中的每个元素。所以 two 首先出现,然后是 one 然后是 zero:

["zero", "two", "one"] # original list
[  3,      1,     2  ] # assign this order to each element

现在,排序后:

[  1,     2,      3  ] # sorted keys
["two", "one", "zero"] # and there you go!

关于python - 这个排序代码是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18689293/

相关文章:

python - 如何在 matplotlib 图的底部显示残差

python - openpyxl 只读 use_iterators

python - 删除行包含 Pandas 数据框中的非英语单词

python - 重命名 true false boolean 值

python - numpy 1.6.1 argsort() 奇怪的行为?

python - 在 Python 中生成循环移位/减少拉丁方

python - 扭曲的框架服务器作为客户端建立连接?

python - 带有不在模型中的额外字段的 Django ModelForm

python - 如何从马尔可夫链输出创建段落?

python - 如何在不选择任何内容的情况下关闭kivy中的下拉菜单