这很好用:
In [53]: map(None, a,c,d)
Out[53]: [(1, 4, 'a'), (2, 5, 'b'), (3, 6, None), (None, 7, None)]
(
In [60]: a
Out[60]: [1, 2, 3]
In [61]: c
Out[61]: [4, 5, 6, 7]
In [62]: d
Out[62]: ['a', 'b']
)
但是,如果我想要列表而不是元组,它会失败:
In [54]: map(list, a,c,d)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-54-9447da50383e> in <module>()
----> 1 map(list, a,c,d)
TypeError: list() takes at most 1 argument (3 given)
我可以通过以下方式解决这个问题:
In [58]: [list(x) for x in map(None, a, c, d)]
Out[58]: [[1, 4, 'a'], [2, 5, 'b'], [3, 6, None], [None, 7, None]]
但是有没有我可以直接在 map() 中使用的东西?
似乎大多数序列都有这个问题:
In [59]: tuple(3,3,5)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-59-f396cf5fe9be> in <module>()
----> 1 tuple(3,3,5)
TypeError: tuple() takes at most 1 argument (3 given)
我希望能够将一个特殊的序列传递给 map() 并获取这些序列的列表(例如列表、集合等),并结合来自“压缩”(映射)序列的后续元素。