2017-03-08 8 views
1

リストを1000回以上複製してから大きなリストに追加したいとします。例えばリストを一定回数複製する方法

a = ['1','2','3','4] 

このリストを複製して、百倍、それを入れ子:

output = [['1','2','3','4],['1','2','3','4],['1','2','3','4],['1','2','3','4],['1','2','3','4].....] 

これまでのところ、私は私だけを望んでいません* 2、渡って来ています欲しいです。

+0

を解決するためであります[a] * 5を試してみてください....... –

+1

サブリストを独立させたいのですか、それともすべてを1つの 'a'リストへの参照にしますか? IOW、もしあなたが 'output [1] [1] = '5''をしたら、' [[1'、 '5'、 '3'、 '4']、['1' '、' 5 '、' 3 '、' 4 ']、[' 1 '、' 5 '、' 3 '、' 4 '] –

答えて

4

リストを簡単に複製できます。

a = ['1','2','3','4'] 
output = [a]*1000 

上記は参考になります。 別のコピーが必要な場合は、次の操作を行います。

a = ['1','2','3','4'] 
output = [a[:] for i in range(1000)] 
1

あなたはとても近くです。 a * 2[1, 2, 3, 4, 1, 2, 3, 4]を与えるかもしれませんが、同じ演算子を使用して結果を得る方法があります。内容を繰り返すだけなので、[a] * 2を試してみてください。

3

この場合、[a]*2を使用する必要があります。しかし、*演算子は、変更可能なオブジェクトであるため、メインオブジェクトへの多重参照を作成することに注意してください。代わりに、より多くのニシキヘビの方法として、あなたはあなたの主要な目的の別のコピーを与えるであろうitertools.repeat()を使用することができます。

In [2]: from itertools import repeat 

In [5]: a = ['1','2','3','4'] 

In [6]: list(repeat(a, 4)) 
Out[6]: 
[['1', '2', '3', '4'], 
['1', '2', '3', '4'], 
['1', '2', '3', '4'], 
['1', '2', '3', '4']] 
0

は、あなたが様々な行うことができます

output = print([a]*no_of_count) 
0

使用リスト内包

>>> b = [a for i in range(3)] 
>>> b 
[['1', '2', '3', '4'], ['1', '2', '3', '4'], ['1', '2', '3', '4']] 

を試してみてくださいリストに対するそのような操作。 このリンクをチェックしてくださいhere

0

私の理解していることですが、将来同じ操作を行うために同じリファレンスを使わずにリストを複製する必要があります。

あなたはリスト

import copy 
a = [1,2,3,4] 
n = 1000 
def replicateMaster(n, a): 
    output= [] 
    while n != 0: 
     n -= 1 
     output.append(copy.deepcopy(a)) 
    return output 

それとも単にこの速記を使用、複製含むリストをn回発生するコードのこの部分をしようとします:

import copy 
a = [1,2,3,4] 
n = 1000 
output = [copy.deepcopy(a) for i in range(n)] 

うまくいけば、このコードはあなたの問題

関連する問題