2017-12-29 27 views
1

Pythonを新しくMatlabから来て、配列とは対照的にリストを使用するのに慣れています。 2つのリストがあります。各行の項目が2番目の要素と一致する場合は、最初から3番目の項目を作成しようとしています。基本的に、私は最初のリストの最初の行の項目を2番目のリストの項目と比較して新しいリストを作成します。

list1 = [['name1',height1,length1],['name2',height2,length2]...['name9',height9,length9] 
list2 = ['name1','name9'] 
list3 = [] 

を持って、私はlist2の中の項目に一致する最初の項目を持つリスト1の行が含まれますLIST3をしたい

for row in list1 
    if first element (namex) in row is in list2 
     append row to list 3 

のような何かをしたいました。

list3 = [['name1',height1,lenght1],['name9',height9,length9]] 

私はこれを行うための2種類の方法を試してみたが、空白LIST3の両方の結果:

list3 = [item for item in list1 if item[0] in list2] 

for rows in list1: 
    if list1[0] in list2: 
     list3.append(rows) 

は、リストが同じでインデックスを作成することができないことを知ってどのようにして同様の機能を得ることができますか?

+0

ご希望の出力は何ですか? –

+0

投稿したコードに何が間違っていますか?リストの理解はあなたの期待される結果を生み出しますね。 –

+0

@Rawingリスト3は、コード – ah21363

答えて

1

あなたの最初の提案された方法は、私のためにうまくいった。次のように編集される必要がある仕事をする第二の方法については

、:

list3 = [] 
for row in list1: 
    if row[0] in list2: 
     list3.append(row) 
1

ifのチェックでは、rows[0]ではなくlist1[0]を使用してください。

for row in list1: 
    if row[0] in list2: 
     list3.append(rows) 

これは、リストの理解に集約することができます。

list3 = [row for row in list1 if row[0] in list2] 
関連する問題