对于我的申请units
和errors
始终是数值的列表。我试着用google搜索每个部分,并找出zip的第一部分。这似乎代码zip(* sorted(zip(units,errors)))的作用是什么?
ziped_list = zip(units, errors)
只是对单位和错误产生的列表为[...,(unit, error),...]
。然后它传递给排序的元素进行排序。由于我没有提供key
的参数,因此它直接比较元素,如文档所示:
默认值为None(直接比较元素)。
由于ziped_list
是整数元组列表,因此它似乎直接对元组进行比较。从我的终端(蟒蛇3)一个小例子,现在看来,这将基于第一个元素(即使文档暗示的比较是件明智的):
>>> (1,None) < (2,None)
True
>>> (2,None) < (1,None)
False
最后一位拆包,然后拉链仍然一个谜,我一直无法弄清楚他们做了什么。据我所知,*
解开位置参数,但做*
不让我看到它在做什么,如果我在命令行尝试它。令我更加困惑的是,为什么zip
需要作为参数传递给一个解压缩列表,如*sorted
,如果它已将一个名为iterable的变量作为参数zip(*iterable)
。这似乎令人困惑(对我来说)为什么我们需要解压缩一些只能作为输入列表的迭代器。
元组的比较就像所描述的那样是字典式的,而不仅仅是第一个元素。试试'(1,1)','(1,2)','(2,1)'和'(2,2)'来看看它是如何工作的。 –
@DietrichEpp也许我不明白词典上的意思。 – Pinocchio
aka“按字母顺序排列” –