我说的是这个模块:http: //docs.python.org/library/operator.html
来自文章:
运算符模块导出一组在C中实现的函数,这些函数对应于Python的内部运算符.例如,operator.add(x,y)等价于表达式x + y.函数名称是用于特殊类方法的函数名称; 为方便起见,还提供了没有前导和尾随__的变体.
我不确定我理解这个模块的好处或目的.
我很好奇是否有任何关于哪个operator.itemgetter(0)或哪个lambda x:x[0]更好用的指示,特别是sorted()作为key关键字参数,因为这是首先考虑的用途.有任何已知的性能差异吗?是否有任何与PEP相关的偏好或指导?
我有一个二维列表,其中每个条目都有一个时间戳(int)和第二个值,可以是 int、字符串或对象。
我使用 min() 函数来获取具有最低时间戳的条目:
a = [[2, "start C"],
[6, 2484],
[15, "finish C"]]
print(min(a))
Run Code Online (Sandbox Code Playgroud)
输出:
[2, 'start C']
Run Code Online (Sandbox Code Playgroud)
当存在相同的最低时间戳时, min() 将比较这些项目的第二列。
仅当第二列具有可比值时,此操作才有效:
[2, 'start C']
Run Code Online (Sandbox Code Playgroud)
输出:
[2, 'start B']
Run Code Online (Sandbox Code Playgroud)
如果第二列包含不同的数据类型,则会引发错误:
a = [[2, "start C"],
[2, "start B"],
[15, "finish C"]]
print(min(a))
Run Code Online (Sandbox Code Playgroud)
输出:
TypeError: '<' not supported between instances of 'int' and 'str'
Run Code Online (Sandbox Code Playgroud)
如何只检查第一列的最小值?当存在相同的时间戳时,它应该简单地返回遇到的第一个项目。