2016-12-05 3 views
0
j = [['4', '5'], ['1', '1'], ['1', '5'], ['3', '4'], ['3', '1']] 
k = [['5', '2'], ['4', '2'], ['2', '4'], ['3', '3'], ['4', '3']] 
t = [] 
indexPointer = 0 

for coord in j: 
    for number in coord: 
     t[indexPointer][0] = number 
     indexPointer += 1 
indexPointer = 0 
for coord in k: 
    for number in coord: 
     t[indexPointer][1] = number 
     indexPointer += 1 
print(t) 

中には、出力する必要があります'はIndexError:範囲外のリストインデックス' 割り当て

[[4,5],[5,2],[1,4],[1,2],[1,2],[5,4],[3,3],[4,3],[3,4],[1,3]] 

代わりに私が取得:

t[indexPointer][0] = number 
IndexError: list index out of range 

どのように私はこの問題を解決することができますか?私は道を見出そうとしたが運がなかった。

編集: 私は必要なコードをすべて含んでいませんでした。更新されました。

答えて

0

あなたは空のリストへのインデックスすることはできません、何もありませんので、:ちょうど各要素は、それ自身のリストにある気づきました。

t = [None] * 10 

をしかし、あなたは2次元であることをtを期待するので、でもこれはまさに、動作しません:あなたは、例えばそれに物事を追加、または空の値でそれを事前移入する必要がありますどちらか。あなたはそうのように、defaultdict taを作ってみたいことがあります。

from collection import defaultdict 
t = defaultdict(dict) 
t[1][0] = 'a' 
+0

コードを更新しました。私はもともとは少し不明でした。更新された質問に基づいて私を助けてくれるかもしれませんか? –

+0

同じことが適用されます。空のリストにインデックスを付けることはできません。辞書に入れてインデックスに登録するか、空のデータで事前入力する必要があります。 – user3030010

0

なぜ範囲外になりますか?

あなたのt変数は、2次元であるかのようにアクセスしようとしている空の1次元リストです。

jにあるすべてのものをtに追加しようとしていますか?その場合、あなたはちょうどこのような何か行うことができます:t = list(itertools.chain(*j))

編集:t = [[x] for x in itertools.chain(*j)]

+0

私はコードを更新しました。私はもともとは少し不明でした。更新された質問に基づいて私を助けてくれるかもしれませんか? –

0

私はPythonistaにより投稿されたコードをお勧めしますが、それを動作させるために、あなたのコードを調整するために:あなたがループしていると

j = [['4', '5'], ['1', '1'], ['1', '5'], ['3', '4'], ['3', '1']] 
t = [] 

for coord in j: 
    for number in coord: 
     t.append([number]) 

print(t) 
#[['4'], ['5'], ['1'], ['1'], ['1'], ['5'], ['3'], ['4'], ['3'], ['1']] 

各要素を通じて.appendのリストメソッドがリストtの末尾に[number]をタックしています。

あなたはlist comprehensionを使用して、この同じネストされたループのコードを達成することができます:あなたは、あなたの質問に更新しましたので

t = [[number] for coord in j for number in coord] 

を更新

をあなたにはzip機能を検討すべきですこの状況。

t=list(itertools.chain(*zip(j,k))) 

あなたがforループを使用したい場合は、上記のコードを更新するが、ここであなたが.extendメソッドリストを使用することができます。

j = [['4', '5'], ['1', '1'], ['1', '5'], ['3', '4'], ['3', '1']] 
k = [['5', '2'], ['4', '2'], ['2', '4'], ['3', '3'], ['4', '3']] 
t = [] 

for coord in zip(j,k): 
    t.extend(coord) 

print(t) 
#[['4'], ['5'], ['1'], ['1'], ['1'], ['5'], ['3'], ['4'], ['3'], ['1']] 

と理解として:

t=[i for coord in zip(j,k) for i in coord] 
+0

私はコードを更新しました。私はもともとは少し不明でした。更新された質問に基づいて私を助けてくれるかもしれませんか? –

+0

@NickWright更新内容に基づいて回答を更新しました – LMc

関連する問題