こんにちは!
そのため、2 つのリストから要素を取得する関数があります。1 つ目は標準のリスト形式で、2 つ目はリストのリストで、内側のリストには 3 タプルの形式の要素が含まれています。私の出力は、2 番目のリストの形式の新しいリストであり、同じ数の内部リストに同じ数の要素を含み、関数を通過した結果として値の一部がわずかに調整されています。
これはコードの例と関数の例で、チェーンが itertools からインポートされています。最初は次のようなリスト[0,1,2,3,1,5,6,7,1,2,3,5,1,1,2,3,5,6]
ですが、2番目は次のようなリストです[[(13,12,32),(11,444,25)],[(312,443,12),(123,4,123)],[(545,541,1),(561,112,560)]]
def add(x, y):
return x + y
foo = [add(x, y) for x, y in zip(first, chain(*(chain(*second))))]
bar = [foo[i:i+3] for i in range(0, len(foo), 3)]
second = [bar[i:i+2] for i in range(0, len(foo) / 3, 2)]
* *注: Chain(chain()) 部分は次の目的のためのものです: 通常、3 タプルを含むリストのリストを処理するのは少し難しいため、chain(chain()) は単純に (従来のリストに) 平坦化されます。個々の要素の) 前述の「奇数形式」の 2 番目のリスト。コードの残りの部分は、関数の出力から新しいリストを元の形式に再構築するだけです。これは既にフラット化された形式になっています。
私が抱えている問題は次のとおりです。
出力を元の「2番目の」リストとまったく同じサイズと形式にしたい。両方のリストが空の場合、空のリストが返されるようにします。最初のリストが空の場合、元の 2 番目のリストが返されるようにします。2 番目のリストが空の場合、空のリストが返されるようにします。
最初のリストが2番目のリストよりも短い場合、関数を実行したいのですが、2つのリスト間で要素を一致させることができ、2番目のリストの「超過」は変更されません。
2 番目のリストが最初のリストよりも短い場合、2 番目のリストにある多くの要素に対して関数を実行し、リスト 1 の「余分な」要素を無視して、同じ値を持つ新しいリストを出力します。元の 2 番目のリストとしての寸法と書式設定。
私の問題は、これらの小さなニュアンスをコードに実装する方法がわからないことです。どんな助けでも大歓迎です。
乾杯、ジェームズ