ノード分析をしようとしているときに、次の問題があります。
例えば:
my_list=[[1,2,3,1],[2,3,1,2],[3,2,1,3]]
次の方法で my_list 内の element_list を処理する関数を書きたいと思います。
- my_list のリスト内の特定の要素の出現回数は重要ではなく、リスト内の一意の要素が同じである限り、それらは同一です。
上記の前提に基づいて同一のループを見つけ、最初のループのみを保持し、順序を維持しながら my_list の他の同一のリストを無視します。
したがって、上記の例では、 my_list 内のすべてのリストが上記の前提に基づいて等しいため、関数は [1,2,3,1] である最初のリストのみを返す必要があります。
これを行うためにPythonで関数を作成しましたが、短縮できると思います。これが効率的な方法であるかどうかはわかりません。これが私のコードです:
def _remove_duplicate_loops(duplicate_loop):
loops=[]
for i in range(len(duplicate_loop)):
unique_el_list=[]
for j in range(len(duplicate_loop[i])):
if (duplicate_loop[i][j] not in unique_el_list):
unique_el_list.append(duplicate_loop[i][j])
loops.append(unique_el_list[:])
loops_set=[set(x) for x in loops]
unique_loop_dict={}
for k in range(len(loops_set)):
if (loops_set[k] not in list(unique_loop_dict.values())):
unique_loop_dict[k]=loops_set[k]
unique_loop_pos=list(unique_loop_dict.keys())
unique_loops=[]
for l in range(len(unique_loop_pos)):
unique_loops.append(duplicate_loop[l])
return unique_loops