이중리스트 flatten하기
조회수 518회
['[ abc, def ]', '[ ghi, abc ]', '[ def ]']
위와 같은 이중리스트를 1차원리스트로 바꾸고 싶어요
즉,
['abc', 'def', 'ghi']
위와 같이 변환하고싶습니다.
itertools 사용해서 변환하니
['a', 'b', 'c', 'd', 'e', 'g', 'h', 'i']
이런식으로 모두 쪼개어져 나오네요 ㅠㅠ
방법이 있을까요
1 답변
-
먼저
['[ abc, def ]', '[ ghi, abc ]', '[ def ]']
은 2중 리스트가 아니고 문자열의 리스트입니다.제 생각에는 아래와 같은 조건에서 결과를 원한 것 아닌가 싶습니다.
L = [['abc', 'def'], ['ghi', 'abc'], ['def']] import itertools as it set(it.chain(*L)) {'abc', 'def', 'ghi'}
만약 조건이
['[ abc, def ]', '[ ghi, abc ]', '[ def ]']
였다면 정규식등을 이용해서 2중 리스트로 만들어서 작업해야 합니다.import re L = ['[ abc, def ]', '[ ghi, abc ]', '[ def ]'] L2 = [re.findall(r'(\w+)[,]?', s) for s in L] import itertools as it set(it.chain(*L2))
댓글 입력