리스트는 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중첩 목록은 대괄호 쌍이 너무 많다는 생각도 있습니다. 1차원 목록에는 한 쌍만 있으면 됩니다. 처리하기 쉽습니다
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]다음 방법은 Tkinter 모듈을 사용하며 메일링 리스트에서 볼 수 있는 방법입니다. 그게 가능하다는 걸 모르는 학생들이 많을 것 같은데, Python과 함께 나온다고 할 수 있겠네요. Python의 Windows 버전에는 Tkinter 모듈이 포함되어 있지만 Linux에는 기본적으로 Numpy, 파이프 등이 없습니다. 중첩된 튜플에 대해 더 말할 필요는 없습니다. 위의 PYTHON 병합 중첩 목록의 간단한 구현은 편집자가 모든 내용을 귀하와 공유했기 때문에 참고할 수 있기를 바랍니다. 또한 모든 사람이 PHP 중국어 웹사이트를 지원하기를 바랍니다. PYTHON 중첩 목록 병합과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!