2016-09-24 5 views
0

を使用して次の要素を印刷:二つのリストを比較して、私は2つのリストを持っているのループ

私はリスト1の項目がリスト2に存在するリスト2の次の要素を印刷するPythonコードを書きたい
list1=['lo0','lo1','te123','te234'] 
list2=['lo0','first','lo1','second','lo2','third','te123','fourth'] 

、他の書き込みを「まったく一致しない」、つまり、私のように出力したい:

first 
second 
no-match 
fourth 

私は、次のコードを思い付いた:

for i1 in range(len(list2)): 
     for i2 in range(len(list1)): 
      if list1[i2]==rlist2[i1]: 
       desc.write(list2[i1+1]) 
       desc.write('\n') 

それ出力を提供します:

first 
second 
fourth 

と私は要素がlist2の中に存在しない「無マッチ」を誘発しない方法を見つけ出すことはできません。ご案内ください!前もって感謝します。

答えて

0
list1=['lo0','lo1','te123','te234'] 
list2=['lo0','first','l01','second','lo2','third','te123','fourth'] 

for i in list1: 
    if i not in list2: 
     print('no-match') 
    else: 
     print(list2[list2.index(i)+1]) 

代わりに、項目がlist2の最後の値である場合にルーチンを含めることを除いて、tryを含めることができます。

list1=['lo0','lo1','te123','te234','fourth'] 
list2=['lo0','first','l01','second','lo2','third','te123','fourth'] 

for i in list1: 
    if i not in list2: 
     print('no-match') 
    else: 
     try:    
      print(list2[list2.index(i)+1]) 
     except IndexError: 
      print(str(i)+" is last item in the list2") 
+0

をいいえ、それは何をされますlist1のすべての要素をlist2のすべての要素と比較し、同じでないすべての要素に対してno-matchを出力します。つまり、出力には不一致がたくさんあります。 – Anjali

0

あなたはあなたは、現在の要素のインデックス+ 1を使用して、リスト2から次の要素を印刷セットに含まれる要素を見つけた場合、会員をテストするためにを設定してを列挙使用することができます。

list1=['lo0','lo1','te123','te234',"tel23"] 
list2=['lo0','first','l01','second','lo2','third','te123','fourth'] 
st = set(list1) 

# set start to one to always be one index ahead 
for ind, ele in enumerate(list2, start=1): 
    # if we get a match and it is not the last element from list2 
    # print the following element. 
    if ele in st and ind < len(list2): 
     print(list2[ind]) 
    else: 
     print("No match") 

正解もある:

first 
No match 
second 
No match 
No match 
No match 
fourth 
No match 

'l01''lo1'と等しくない場合は、繰り返し単語があるかのようにインデックスを使用することはできません。常に最初の一致が得られます。ループのための二重およびOをやって、独自のロジックを一致させるために

(N^* 2)の比較:

for ind, ele in enumerate(list2, start=1): 
    for ele2 in list1: 
     if ele == ele2 and ind < len(list2): 
      print(list2[ind]) 
     else: 
      print("No match") 
+0

list1のすべての要素をlist2のすべての要素と比較し、等しくないすべての要素に対してno-matchを出力します。つまり、出力には多くの不一致と一致する文字列があります。それは私の要求に従って出力を出すものではありません。 – Anjali

+0

@Anjali、私は必要な出力が間違っています '第1、第2、第4の'は 'list01'の' 'l01''ですか? –

+0

私はlo1に私の質問を編集しました! – Anjali

0
list1=['lo0','lo1','te123','te234'] 
list2=['lo0','first','lo1','second','lo2','third','te123','fourth'] 
res=[] 
for elm in list1: 
    if elm in list2: 
     print list2[list2.index(elm)+1] 
    else : 
     print 'No match' 

アウト置く:

first 
second 
fourth 
No match 
関連する問題