2011-07-10 12 views
0

Pythonで大きな(つまりインデックス可能な)空のリストをきれいに作成する方法はありますか?どのようにして、インデックス可能な空のリストをPythonで作成しますか?

これは私が現時点ではやっているものです:

firstgen=G.neighbors(node1) 
secgen=[] 
thirdgen=[[],[],[],[],[],[],[],[],[],[],[]] #11 brackets because len(secgen)=11 

for i in firstgen: 
    secgen.append(G.neighbors(i)) 

for i in range(len(secgen)): 
    for j in secgen[i]: 
     thirdgen[i].append(G.neighbors(j)) 

ネットワークに元のノードの隣人の隣人の隣人を見つけ、その隣人の私の第三世代リストされて私は何をやっています[[...]、[...]、[...]]、[[...]、[...]、[...]]、[[...] ]、[...]、[...]]]しかし、私はPythonには新しく、thirdgenの長さを手作業で入れずにこの作業を行う方法を見つけることができませんでした。

ご迷惑をおかけして申し訳ありません。私はネットワーク内の三つ組を見つけるためにこれをやっています。つまり、三つ目のgenノードのどれかが初期ノードと同じなら、私は三つ組を発見しました。

ありがとうございます!

EDIT:thirdgen.append([])を最初のループに入れることができます。しかし、他の方法についてはまだ興味があります。おそらく、

+0

を見てみましょう。あなたが私に知られていない理由でこれを行う必要がある場合を除いて、私はあなたの特定のニーズを処理するための方法を持つ独自のデータ構造を作ることを提案します。 –

+0

「空」とはどういう意味ですか?コンテナへのインデックスは、要素を取得するために行うものです。 「空」の通常の定義では、実際に検索する要素が存在する可能性はありません。空リストのネストされたリストが必要なようです。しかし*あなたはそれに何をしようとしていますか?あなたが「ネットワーク」と「トライアド」で話していることをはるかに慎重に説明してください。 –

答えて

2

thirdgen = [list() for x in range(len(secgen))] 
thirdgen = [list() for x in range(11)] 

または私は、実際の質問を誤解される可能性があります。

+0

うん、それだよ!ありがとう – iRoygbiv

+0

'list()'はもっと慣用的に '[]'と綴られています。 –

2

リストジェネレータを次のように使用できます。[[] for x in range(11)]

+0

Ahhリストジェネレータ。ありがとう! – iRoygbiv

+3

それはリストの理解です。ジェネレータは '(xrange x in(11)のための[[])' –

3

空のリストを作成する必要はありません。あなたのネストされたリストを構築するために、リストの内包表記を使用することができます。

firstgen = G.neighbors(node1) 
secndgen = [G.neighbors(node) for node in firstgen] 
thirdgen = [[G.neighbors(node) for node in group] for group in secndgen] 
  • firstgen: [node, ...]
  • secndgen: [[node, ...], ...]
  • thirdgen: [[[node, ...], ...], ...]
0

はそれが醜い得ることができるようにこれが見えますnumpy

関連する問題