2016-05-13 8 views
0

私はリストの2つのリストを持っています。私はそれらを繰り返し、同じ位置で共通の要素を探しています。リストの一覧に行くためのもっとpythonic方法

elements_to_checkリストのリストのいずれかの要素が一致し、unique_listにない場合は、それをそこに追加します。

要素が1つも一致しない場合は、このリストをnot_match_listに追加します。

以下に、私のコード例を示します。それはほとんど動作します。なぜ[2、3、 'd'](例えば[2、3、 'c']や[2,4、d ']が既にunique_listに入っているか)not_match_listの最後に、 誰かが私になぜnot_match_listに[2、3、 'd']があるのか​​説明してもらえますか、このコードをもっとpythonicで書き直す方法を教えてください。

unique_list = [[1, 2, 'a'], [4, 2, 'b'], [1, 3, 'c'], [2, 3, 'c'], [2, 4, 'd']] 
not_match_list = [] 
elements_to_check = [[2, 3, 'a'], [3, 4, 'a'], [4, 2, 'a'], [4, 2, 'a'], [2, 3, 'd'], [9, 9, 'z']] 

print(unique_list) 
for unique_element in unique_list: 
    for element_to_check in elements_to_check: 
     if element_to_check[0] == unique_element[0] and element_to_check not in unique_list: 
      unique_list.append(element_to_check) 
     elif element_to_check[1] == unique_element[1] and element_to_check not in unique_list: 
      unique_list.append(element_to_check) 
     elif element_to_check[2] == unique_element[2] and element_to_check not in unique_list: 
      unique_list.append(element_to_check) 
     elif element_to_check not in unique_list and element_to_check not in not_match_list: 
      not_match_list.append(element_to_check) 

print(unique_list) 
print(not_match_list) 

期待される結果:

unique_list = [[1, 2, 'a'], [4, 2, 'b'], [1, 3, 'c'], [2, 3, 'c'], [2, 4, 'd'], [2, 3, 'a'], [3, 4, 'a'], [4, 2, 'a'], [2, 3, 'd']] 
not_match_list = [[9, 9, 'z']] 
+0

私はあなたのやりたいことを十分に理解していません。 2つのリストがあり、3番目のリストには何が必要ですか? – L3viathan

+0

unique_list - 最終的なリストです。\ n \ n element_to_check - チェックする必要のある要素のリストです。ある要素がunique_listの要素と共通であり、そのようなリストがunique_elementsにない場合、その要素でunique_listを追加する必要があります。 \ n \ n not_match_list - ユニークリスト内の要素と共通の要素を持たないelements_to_checkからのリストのリスト – Kacper

+0

この例の答えはどうでしょうか? – ZWiki

答えて

0

私はあなたができると信じています

for element_to_check in elements_to_check: 
    for unique_element in unique_list: 
     if element_to_check[0] == unique_element[0] and element_to_check not in unique_list: 
      unique_list.append(element_to_check) 
     elif element_to_check[1] == unique_element[1] and element_to_check not in unique_list: 
      unique_list.append(element_to_check) 
     elif element_to_check[2] == unique_element[2] and element_to_check not in unique_list: 
      unique_list.append(element_to_check) 

    if element_to_check not in unique_list and element_to_check not in not_match_list: 
     not_match_list.append(element_to_check) 
0

これは完全なソリューションではありませんが、私が正しくあなたを理解していれば、あなたは少なくとも、これを簡略化することができます。これに

if element_to_check[0] == unique_element[0] and element_to_check not in unique_list: 
    unique_list.append(element_to_check) 
elif element_to_check[1] == unique_element[1] and element_to_check not in unique_list: 
    unique_list.append(element_to_check) 
elif element_to_check[2] == unique_element[2] and element_to_check not in unique_list: 
    unique_list.append(element_to_check) 
elif element_to_check not in unique_list and element_to_check not in not_match_list: 
    not_match_list.append(element_to_check) 

if any(to_check == unique for to_check, unique in zip(element_to_check, unique_list)) and element_to_check not in unique_list: 
    unique_list.append(element_to_check) 
else: 
    not_match_list.append(element_to_check) 
関連する問題