2017-01-05 12 views
-1

不等長のサブリストを持つ単一のリストに対してZip inverseを使用して期待される結果を得ようとしています。リストの理解を通してこれを達成する方法があるのか​​どうか疑問に思うだけです。Pythonのジップ逆関数 - サブリストの長さが異なるネストされたリスト

a = [[1,2],[1]] 

    print zip(*a) 

    result : 
    [(1, 1)] 

    Expected result: 
    [((1, 1)), ((2, None))] 
+0

[返されるリストの長さは、**最短の引数シーケンス**](https://docs.python.org/2/library/functions.html#zip)の長さに切り捨てられます。 itertoolsには、必要な動作の['izip_longest()'](https://docs.python.org/2/library/itertools.html#itertools.izip_longest)があります。 – dhke

+0

@dhkeはい、私はizip_longest()を認識していますが、この例に収まるかどうかはわかりません。 – MSH

+2

@MSH 'izip_longest(* a)'は**正確に**あなたが望むものです。 [docs](https://docs.python.org/2/library/itertools.html#itertools.izip_longest)を読んで、試してみる価値があります。 –

答えて

0

zip()停止配列のがなくなったとき、すなわち、それは唯一の要素を持つ最小のサブシーケンスとしてのみとして多くの項目を返します。

返されたリストは、存在しないアイテムの充填要素を返す、最長の配列上で動作

itertoolsizip_longest()を有する最短引数配列の長さと長さに切り捨てられ:

>>> a = [[1,2],[1]] 
>>> from itertools import izip_longest 
>>> print list(izip_longest(*a)) 
[(1, 1), (2, None)] 
関連する問題