Python operator.itemgetter函数理解

Python operator.itemgetter函数

使用方法

   from operator import itemgetter
   或 import operator (调用时需要用itemgetter.operator)

作用: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]]

猜你喜欢

转载自blog.csdn.net/qq_22022063/article/details/79019294