我有以下代码:
# initialize
a = []
# create the table (name, age, job)
a.append(["Nick", 30, "Doctor"])
a.append(["John", 8, "Student"])
a.append(["Paul", 22, "Car Dealer"])
a.append(["Mark", 66, "Retired"])
# sort the table by age
import operator
a.sort(key=operator.itemgetter(1))
# print the table
print(a)
它创建一个4x3的表格,然后按年龄对其进行排序。我的问题是,究竟是什么key=operator.itemgetter(1)
?operator.itemgetter
函数是否返回项目的值?为什么我不能只输入类似的内容key=a[x][1]
?可以吗
用运算符如何打印像3x2
is这样的表格的某个值22
?
Python到底如何对表格进行排序?我可以对它进行反向排序吗?
我如何基于两列(例如第一个年龄,然后如果年龄是相同的b名称)对其进行排序?
没有我怎么办operator
?
看起来您对所有这些东西有些困惑。
operator
是一个内置的模块,提供了一组方便的操作员。用两个词operator.itemgetter(n)
构造一个可调用对象,该对象假定一个可迭代对象(例如,列表,元组,集合)为输入,并从中获取第n个元素。
因此,您不能key=a[x][1]
在那里使用它,因为python不知道它是什么x
。相反,您可以使用一个lambda
函数(elem
只是一个变量名,没有魔术):
a.sort(key=lambda elem: elem[1])
或者只是一个普通的功能:
def get_second_elem(iterable):
return iterable[1]
a.sort(key=get_second_elem)
因此,这里有个重要的注意事项:python函数是一等公民,因此您可以将它们作为参数传递给其他函数。
其他问题:
reverse=True
: a.sort(key=..., reverse=True)
itemgetter
多个index:operator.itemgetter(1,2)
或lambda:一起使用lambda elem: (elem[1], elem[2])
。这样,可迭代地为列表中的每个项目构造可迭代变量,然后按lexicographic(?)顺序将它们相互比较(比较第一个元素,如果相等,则比较第二个元素,依此类推)a[2,1]
[索引为0的索引]在[3,2]处获取值。使用运算符…可能,但是不像索引那样干净。 有关详细信息,请参阅文档:
operator.itemgetter
解释问题内容: 以下代码如何将该数组按数字顺序排序? 我知道如果计算结果是… 小于0 :“ a”被排序为比“ b”低的索引。 零: “ a”和“ b”被视为相等,并且不执行排序。 大于0: “ b”被排序为比“ a”低的索引。 在排序过程中是否多次调用了数组排序回调函数? 如果是这样,我想知道每次将两个数字传递给函数。我假设它首先使用“ 25”(a)和“ 8”(b),然后是“ 7”(a)和“ 41”(
问题内容: 在一个安静的星期六晚上解决一些拼图问题(wooohoo …没问题),并在sort()上挣扎。结果并不完全符合我的预期。该程序从100到999的每个组合中进行迭代,并检查产品是否为回文。如果是,请追加到列表。我需要排序的列表:D这是我的程序: 哪些网: 显然索引0大于1。知道发生了什么吗?我觉得它与尾随/前导零有关,但是我快速浏览了一下,但看不到问题所在。 奖励积分,如果您知道谜题来自哪
Shell排序是一种高效的排序算法,基于插入排序算法。 该算法避免了大的移位,如插入排序的情况,如果较小的值是最右边的并且必须移动到最左边。 该算法对广泛传播的元素使用插入排序,首先对它们进行排序,然后对间距较小的元素进行排序。 该间距称为interval 。 此间隔基于Knuth的公式计算为 - Knuth的公式 h = h * 3 + 1 where − h is interval wi
问题内容: 我已经为EHCache配置了defaultCache(用于元素),StandardQueryCache(用于查询)和UpdateTimestampsCache(我认为是为了跟踪数据库更新……但我实际上并没有真正地了解它的功能)。 我已经为每个缓存设置了maxElementsInMemory,但是我没有得到的是这个数字控制StandardQueryCache和UpdateTimestam
Sort Colors 描述 Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue. Here, we will use t
Sort List 描述 Sort a linked list in O(n log n) time using constant space complexity. 分析 常数空间且O(nlogn),单链表适合用归并排序,双向链表适合用快速排序。本题可以复用 Merge Two Sorted Lists 的代码。 代码 // Sort List // 归并排序,时间复杂度O(nlogn),空间复
以字母、数字或随机顺序排列变量的内容(可以选择是否移除重复项)。 Sort, VarName [, Options] 参数 VarName 内容需要排序的变量名. 选项 请参阅后面的列表. 选项 由零个或多个下列字母组成的字符串 (可任意顺序, 字母间可以用空格分隔): C: 区分大小写的排序 (如果同时存在 N 选项则此选项被忽略). 如果同时省略 C 和 CL, 则在排序中大写字母 A-Z 被
sort 方法 对数组的元素进行排序。 语法: arrayObject.sort( sortby ); 参数说明: sortby - 可选。规定排序顺序。必须是函数。 返回值: 对数组的引用。请注意,数组在原数组上进行排序,不生成副本。 说明: 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换