0

誰でもこれを手伝ってくれますか?

2 つのリスト間の範囲を整数でカウントする方法を見つけようとしています。あるリストから次のリストに移動するために必要な各ステップを取得する

これらの 2 つの配列を使用して:

a = [1,1,1]

b = [3,4,3]

私は中間値のシーケンスに到達したいと思います:

[[2,2,2], [None,3,None]]

ありがとう

4

2 に答える 2

4

これは非常に簡単に行うことができitertools.zip_longest()リスト内包表記です。

>>> import itertools
>>> list(itertools.zip_longest(*[range(i+1, j) for i, j in zip(a, b)]))
[(2, 2, 2), (None, 3, None)]

2.xitertools.zip_longest()には存在しないことに注意してください-itertools.izip_longest()代わりに呼び出されます。

これzip()は、値を一緒に結合して境界を取得し、必要な範囲を生成して(含めたくないように見えるので、下限に1を追加する)、itertools.zip_longest()(これも値を紹介しNoneます)。

于 2013-03-11T17:52:06.110 に答える
1

izip_longest が利用できない Python 2.5 以下で動作する Lattywares Answer のバリエーション:

map(None, *[range(x + 1, y) for x, y in zip(a, b)])
于 2013-03-11T17:53:41.427 に答える