>>>uneven = [['a','b','c'],['d','e'],['g','h','i']]
>>>map(None,*uneven)
O / P:[(' a',' d',' g'),(' b',' ;',' h'),(' c',无,'我')]
上面的代码可用于查找矩阵的转置。 但是我无法理解它是如何运作的。
答案 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
的序列。