##Python operator.itemgetter函数
使用方法
from operator import itemgetter
或 import operator (调用时需要用operator.itemgetter)
作用:itemgetter 用于获取对象的哪些位置的数据,参数即为代表位置的序号值,
注:这里其他参考资料上’位置’描述的词语是’维度’,我和其他人想法不同,不能称之为维度,准确的描述,应该是位置,因为我发现,itemgetter返回的只是下表,并且只将处理对象看做一维的,详细可以看后面例子的描述
注意:itemgetter 获取的不是值,而是定义了一个函数,通过该函数作用到目标对象上,取出目标对象对应维度的值
例如:
a = [1,2,3]
b = [[1,2,3],[4,5,6],[7,8,9]]
注: Python列表、元祖、字典等对象的下标均是从0开始的
这里描述一下我理解的维度,即从线性代数的角度看:
这里,列表a我们可以看做一维数据,上面3个点:a[0] = 1, a[1] = 2, a[2] = 3
列表b则是2维数据,上面是9个点:b[0,0] = 1, b[0,1] = 2, b[0,2] = 3, b[1,0] = 4, …, b[2,2] = 9
理解了上面的描述,就可以更好的理解itemgetter的处理结果了
我们定义取出对象位置1上的数据:
get_1 = itemgetter(1)
get_1(a) >>> 2
get_1(b) >>> [4,5,6]
类似:取出对象1,2位置上的数据,并且调整一下顺序:
get_21 = itemgetter(2,1)
get_21(a) >>> [3,2]
get_21(b) >>> [[7,8,9],[4,5,6]]
如果要取出b中第2维度上相应位置上的数据,则需要对其中各个子列表进行取数,因为itemgetter的对象是1维对象:
b_21 = []
for temp in b:
tep = get_21(temp)
b_21.append(tep)
也可以直接:b_21 = [get_21(temp) for temp in b]
>>> b_21 = [[3,2],[6,5],[9,8]]