728x90
반응형
import networkx as nx
coll = [['aaaa', 'aaab', 'abaa'],
['bbbb', 'bbbb'],
['aaaa', 'bbbb'],
['dddd', 'dddd'],
['bbbb', 'bbbb', 'cccc','aaaa'],
['eeee','eeef','gggg','gggi'],
['gggg','hhhh','iiii']]
edges = []
for i in range(len(coll)):
a = coll[i]
for j in range(len(coll)):
if i != j:
b = coll[j]
if set(a).intersection(set(b)):
edges.append((i,j))
G = nx.Graph()
G.add_nodes_from(range(len(coll)))
G.add_edges_from(edges)
for c in nx.connected_components(G):
combined_lists = [coll[i] for i in c]
flat_list = [item for sublist in combined_lists for item in sublist]
print(set(flat_list))
출처 : https://stackoverflow.com/questions/56567089/combining-lists-with-overlapping-elements
728x90
반응형
'파이썬3' 카테고리의 다른 글
슬라이싱 (slicing)을 통한 k-mer 생성기 (0) | 2024.05.22 |
---|---|
python argparse 사용법 (0) | 2024.04.24 |
단백질 서열로부터 BLOSUM (Blocks substitution matrix)을 만들기 위한 내용들 (0) | 2024.04.01 |
정렬된 펩타이드 서열로부터 아미노산 교체 오즈비 (substitution odd-ratio) 구하는 기능 (0) | 2024.03.25 |
pickle용 저장/불러들이기 기능 (0) | 2024.03.14 |