2017-10-20 10 views
-3

2つのリストを比較し、最初のリストが他のリストと異なるところを示すリストを返す関数を作成しようとしています。2つのリストの違いを見つけてゼロ1リストを作成する

  • 例1:

    list1: [1, 2, 3] 
    list2: [1, 3] 
    desired result: [0, 1, 0]  
    
  • 例2

    list1: [1, 3, 1, 2, 4] 
    list2: [1, 1, 4] 
    desired result: [0, 1, 0, 1, 0] 
    
  • 例3

    list1: [3, 5, 2, 9, 9] 
    list2: [3, 5, 9, 9] 
    desired result: [0, 0, 1, 0, 0] 
    
  • 例4

    list1: [1, 1, 1] 
    list2: [1] 
    desired result: [0, 1, 1] 
    
  • 例5

    list1: [1, 2, 2, 1] 
    list2: [1, 2, 1] 
    desired result: [0, 0, 1, 0] 
    

いくつかの事実:

  • list1list2
  • desired listと常に大きいか等しい長さで所望のリスト内の1の数は、2つのリストの長さの差に等しいlist1
  • の長さを有します。

私は何の答えも提供していませんが、私はこれを実装する方法は考えられません。ガイダンス/ヒント?

+0

出力はどうあるべき 'list1'は[1,2]'で 'と' list2'があるとき'[3]'?質問のために – Kevin

+0

ありがとうございます。私はそれについて私の質問を編集しようとしていた。すぐにやります。それは可能ではありません。ある観点では、list2は何らかの形でlist1になります。 –

+1

2番目の例で、最後の2つが '.. 1、0]'である理由を理解していません.... –

答えて

1

は私の試みです:

def compute_difference(list1, list2): 
    result = [] 
    iter1 = iter(list1) 
    for item2 in list2: 
     for item1 in iter1: 
      if item2 == item1: 
       result.append(0) 
       break 
      else: 
       result.append(1) 
    for item1 in iter1: 
     result.append(1) 

    return result 

assert compute_difference([1,2,3],[1,3]) == [0, 1, 0] 
assert compute_difference([1, 3, 1, 2, 4], [1, 1, 4]) == [0, 1, 0, 1, 0] 
assert compute_difference([3, 5, 2, 9, 9], [3, 5, 9, 9]) == [0, 0, 1, 0, 0] 
0

他のものほど優雅ではありませんが、これは機能します。基本的には、リスト間のメンバーシップをチェックするだけです。それがある場合は0を追加し、そうでない場合は新しいリストに1を追加します。

list1 = [3, 5, 2, 9, 9] 
list2 = [3, 5, 9, 9] 
# desired result: [0, 0, 1, 0, 0] 

result = [] 
for i in range(0, len(list1)): 
    # print(list1[i]) 
    if list1[i] in list2: 
     result.append(0) 
    else: 
     result.append(1) 
print(result) 

これが役立つことを願っています。ここで

1

私はこれがあなたのために働くと思う:

desired = [] 
list1= [1, 3, 1, 2, 4] 
list2= [1, 1, 4] 
j = 0; 
for i in range(len(list2)): 
    while(list1[j] != list2[i]): 
     desired.append(1) 
     j+=1 
    desired.append(0) 
    j += 1 

print (desired) 
関連する問題