以下地图功能如何工作?

时间:2014-12-22 08:08:10

标签: python python-2.7 dictionary transpose

>>>uneven = [['a','b','c'],['d','e'],['g','h','i']]
>>>map(None,*uneven)

O / P:[(' a',' d',' g'),(' b',' ;',' h'),(' c',无,'我')]

上面的代码可用于查找矩阵的转置。 但是我无法理解它是如何运作的。

2 个答案:

答案 0 :(得分:3)

使用*运算符时,列表会被分解为地图的位置参数。这就是你实际运行的内容:

>>> map(None, ['a','b','c'], ['d','e'], ['g','h','i'])

当您将多个iterables传递给map时,函数(在本例中为None)将并行应用于每个iterable。它首先处理'a', 'd', 'g',依此类推。

修改 正如Jon在下面指出的那样,当您将None作为map函数传递时,它会被特殊地设置为身份函数,即lambda id: id。在{3}中删除了None中使用map的这个特殊大小的内容。

答案 1 :(得分:1)

map(function, sequence[, sequence, ...]) -> list

来自map

的文档

如果给出多个序列,则 使用由相应的参数列表调用函数 每个序列的项目,当不是全部时,将None替换为缺失值 序列长度相同。

如果函数为None,则返回序列项

的列表

根据序列中项目的位置,使用*运算符zip的序列。