리스트는 Python에서 가장 자주 사용되는 데이터 유형이며, 표준 라이브러리에는 사용할 수 있는 다양한 함수가 있습니다.
그런데 다차원 목록을 1차원 목록으로 변환하면(이에 대한 수요가 많을지는 모르겠지만) 유용한 기능을 찾기가 정말 쉽지 않습니다. .
Ruby, Mathematica, Groovy 중에 flatten이 있는 것으로 알고 있습니다.
목록의 차원이 적고 규칙적이면 상대적으로 다루기가 쉽습니다
예:
li=[[1,2],[3,4],[5,6]] print [j for i in li for j in i] #or from itertools import chain print list(chain(*li)) #or a=[[1,2],[3,4],[5,6]] t=[] [t.extend(i) for i in a] print t #or print sum(li,[])
보다 복잡한 경우: li=[1,[2],[[3]],[[4,[5],6 ]]], 위의 방법은 사용하기 쉽지 않으므로 방법을 변경해야 합니다.
은 구조상 트리처럼 보입니다. 디렉토리 순회를 생각하기 쉽기 때문에 다음과 같은 방법이 있습니다.
def flat(tree): res = [] for i in tree: if isinstance(i, list): res.extend(flat(i)) else: res.append(i) return res
def flatten(seq): s=str(seq).replace('[', '').replace(']', '') #当然也可以用正则 return [eval(x) for x in s.split(',') if x.strip()]
flat=lambda L: sum(map(flat,L),[]) if isinstance(L,list) else [L]