2017-08-20 10 views
0

私は反復したいオブジェクトのペアを持っています。例:Pythonのインラインリストはメモリを再割り当てしますか?

for (contType, contLen) in [(contentA, lenA), (contentB, lenB), (contentC, lenC)]: 
    # Do something 

これはうまく動作しますが、私の質問は次のとおりです:
はインラインリストを宣言してい今

contentA = [1, 2, ..... 100000] lenA = 123.12 contentB = [1, 2, ..... 100000] lenB = 123.12 contentC = [1, 2, ..... 100000] lenC = 123.12 

はそれらを反復するために、私は、次のPythonの構文を使用していますforループは最初にメモリを割り当て、それを繰り返します。

問題のオブジェクトは膨大であり、これを行う必要がある反復回数も膨大なので、メモリを再度割り当てようとすると、&は再びメモリと時間を消費します。

+1

このリストには3つの要素しかありません。 –

+1

メモリ割り当ては、サブリストをコピーしないので、簡単です。 'contentA'が巨大であっても、これは' contentA'のコピーを作成しません。 – user2357112

+0

@ user2357112ああ、その場合、私はうまくいくはずです。明確にするために、contTypeオブジェクトはコンテンツ{A、B、C}を参照しますか? –

答えて

0

要素を反復するために作成するリストには、ContentA,ContentBおよびContentCのポインタのみが含まれています。

この例では3つの要素しかないので、3タプル(浮動小数点型)のリストのサイズをメモリに格納します。それほど多くはない。

もう少し効率的にしたい場合は、タプル((contentA, lenA), (contentB, lenB), (contentC, lenC))を反復処理することができます。

関連する問題