2016-05-10 4 views
0

2つのリストの対応する項目の最後の3桁が同じかどうかを確認することです。アイテムの長さが3未満である場合、アイテムの長さが同じかどうかがチェックされます。Pythonで2つのリストの項目を比較する

2つのリストの長さが異なる場合はfalseを返し、両方のリストの長さが0の場合はtrueを返します。私はこれを介して実行した場合

def corresponding_elements_have_same_end(list1, list2): 

if len(list1) == len(list2): 

    for i in range(0, len(list1)): 

     num1 = str(list1[i]) 
     num2 = str(list2[i]) 

     if len(num1) <= 3 and len(num2) <= 3: 
      return num1 == num2 

     else: 
      return num1[-3:] == num2[-3:] 

else: 
    return False 

は:

print("1.", corresponding_elements_have_same_end([3452, 43600, 10], [3111452, 600, 10])) 
print("2.", corresponding_elements_have_same_end([452, 43600], [52, 600])) 
print("3.", corresponding_elements_have_same_end([32, 43032], [32, 32])) 
print("4.", corresponding_elements_have_same_end([32, 43132, 300], [32, 56132, 3300])) 

それは

  • TRUE TRUE

    1. を出力

    それは印刷する必要があります:

  • +0

    strの代わりにmod、%を使用することを検討してください。 num#=リスト#[i]%1000。 –

    答えて

    2

    問題があります関数は常にリストから1つの項目のみをチェックし、長さに関係なく直ちに戻ります。 [32, 43032], [32, 32]を比較すると、32 == 32がチェックされ、すぐにTrueが返されます。最初のリストの順番を[42032, 32]に変更すると、代わりにFalseが返されます。

    問題を修正するには、数値が一致しない場合にのみループが返るようにループを修正する必要があります。そうであれば、次の数字のペアをチェックする必要があります。ループが完了すると、すべての数値が一致することがわかります。ここでは例です:あなたは、インデックスを不要にするためにzipでループを実装することができ

    for i in range(0, len(list1)): 
        if str(list1[i])[-3:] != str(list2[i])[-3:]: 
         return False 
    
    return True 
    

    注:

    for x, y in zip(list1, list2): 
        if str(x)[-3:] != str(y)[-3:]: 
         return False 
    
    0

    多分これはあなたが探しているの制御フローである:

    def corresponding_elements_have_same_end(list1, list2): 
        if len(list1) == len(list2): 
         for i in range(len(list1)): 
          num1, num2 = str(list1[i]), str(list2[i]) 
          if len(num1) <= 3 and len(num2) <= 3 and num1 != num2: 
           return False 
          if num1[-3:] != num2[-3:]: 
           return False 
         return True 
        else: 
         return False 
    
    1
    def t(m,n): 
        if False in map(lambda x,y:str(x)[-3:]==str(y)[-3:],m,n): 
         return False 
        return True 
    
    関連する問題