0

私が持っているもの: 私はリストのリストを持っていますnodes。各リストの構造は次のとおりです。

nodes = [[ID, number 1, number 2, number 3],[...]]

sampleIDと呼ばれるリストの他の 2 つのリストもあります。ここで、各リストは、に含まれる合計のサブセットに属する数値にsampleID2等しい単一のデータのみを持つことができます。IDIDsnodes

sampleID = [[IDa],[...]]
sampleID2 = [[IDb],[...]], len(sampleID) + len(sampleID2) <= len(nodes)

場合によっては、これらのリストは次のようになります。

sampleID = [[IDa1,IDa2, IDa3,...],[...]]

IDi==ID私が欲しいもの: 上記の 3 つのリストを考えると、i=a,bのリストを含む 4 番目のリストをすばやく取得したいと思います。

extractedlist = [[ID, number 1, number 2, number 3],[...]], len(extractedlist) = len(sampleID) + len(sampleID2)

私のコード: 非常に基本的ですが、動作しますが、計算に多くの時間がかかります:

import itertools
for line in nodes[:]:
    for line2,line3 in itertools.izip(sampleID[:],sampleID2[:]):
        for i in range(0,len(line2)):
            if line2[i]==line[0]:
                extractedlist.append([line[0], line[1], line[2], line[3]])
        for j in range(0,len(line3)):
            if line3[j]==line[0]:
                extractedlist.append([line[0], line[1], line[2], line[3]])
4

1 に答える 1

1

私はあなたの問題をよく理解できませんでしたが、これは私が理解していることです:P

node = [ .... ]
sampleID = [ .... ]
sampleID2 = [ .... ]
final_ids = []
[final_ids.extend(list_item) for list_item in sampleID]
[final_ids.extend(list_item) for list_item in sampleID2]

extractedlist = []

for line in nodes:
    if line[0] in final_ids:
        extractedlist.append(line)

これがあなたが必要とするものであることを願っています。それ以外の場合は、問題の元の入力リストと結果リストを追加するだけで、あなたが何をしたいのか理解できます:)

于 2013-09-26T10:41:05.153 に答える