2016-04-01 12 views
0

私はちょっと新しいPythonです...しばらく問題を抱えてしまいました。巨大な研究をした後、私は解決策を見いださなかったので、ここで尋ねることにしました: )。Python - ループ内のリストをコピーする

だから、私の問題を説明しているコード:

test = [] 
solutions = [] 

i = 0 
while i < 100: 
    for i in range(0, 64): 
     pos = random.randrange(0, 64) 
     test.append(pos) 
    solutions.append(test) 
    test.clear() 
    i += 1 

だから私は、ループが行く毎回別のテーブルにテーブルのコピーを追加し、テストという名前のテーブルをきれいにしたいです。問題は、ループが進むたびにリストのコピーを作成する方法がわかりません。だから私は、空のリストのリストを取得しています:(

私はcopy.copyまたはcopy.deepcopyと試みたが、それはうまくいきませんでした。

も任意の「エラー」のためにとても残念ここで私の最初の質問であること私は英語のネイティブスピーカーではないが、私はあなたが私を理解することができることを願っています。

+0

ここでは何をしたいのか分かりませんが、whileループは決して終わりません。 'i + = 1 'を追加するだけでは十分ではありません(必要ですが)。 'while'ループの' i'と 'for'ループの' on'には2つの別名を使用する必要があります。 – Zaphod

+0

のように 'for _ in range(0、64)'を使用してください。質問 – Elvenpath

答えて

0

あなたはクリーンたい場合は、単純に(test.clear使用いけない

solutions.append(list(test)) 
0

リストのコンストラクタを呼び出すことで、重複を追加することができます)

使用:

test = [] 

あなたは無限

import random 
test = [] 
solutions = [] 

i = 0 
while i < 100: 
    for i in range(0, 64): 
     pos = random.randrange(0, 64) 
     test.append(pos) 
    solutions.append(test) 
+0

これは、問題を解決することはできませんが、それはソリューションが空のリストでいっぱいになることを意味します... – Zaphod

+1

@Zaphod:それはあなたが置く場所によって異なります。 'for i in range(64):'ループの前に置いて 'test.clear()'を削除すれば、正常に動作するはずです。 – zondo

+0

ああ、私はちょっと心配しないでください何を正確に必要とします – Milor123

0

あるので、あなたが好きなリストをコピーできます)(test.clearを削除し、しばらくの< 100を変更する必要があります。

solutions.append(test[:]) 

空の方法はないので空にするには、空の新しいリストに再割り当てするだけです:

test = [] 

Zaphodのように、whileループは決して終了しませんでした。なぜなら、あなたはiの値を決して更新していなかったからです。 2つのネストされたforループを使用してみませんか? (アンダースコアは値が使用されていないことを示すvarプレースホルダに過ぎません)

import random 

test = [] 
solutions = [] 

for _ in range(0, 100): 
    for i in range(0, 64): 
     pos = random.randrange(0, 64) 
     test.append(pos) 
    solutions.append(test[:]) 
    test = [] 
print solutions 
+0

これは私のために働いた!ありがとう! @編集 "同じリスト"のリストではなく、 "新しいリスト"のリスト あなたが答えているのは、私が探していたものです。再度、感謝します : ) – Elvenpath

関連する問題