파이썬 리스트 교차하여 합치기 질문입니다.
조회수 4002회
list_n = ['1','2','3','4']
list_a = [A,B,C,D]
위 두가지 배열을 더해서 list_s
라는 배열을 생성하려고 하는데요,
배열을 교차해서 합칠수 있을까요?
원하는 결과는 다음과 같습니다
list_s = ['1',A,'2',B,'3',C,'4',D]
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
2 답변
-
itertools 에 chain 함수를 이용해도 할 수 있습니다.
https://docs.python.org/2/library/itertools.html#itertools.chain
chain 함수는 여러 튜플, 리스트가 있을때 순서대로 연결합니다.
import itertools as it list_n = ['1','2','3','4'] list_a = ['A','B','C','D'] list(it.chain(*zip(list_n, list_a))) ['1', 'A', '2', 'B', '3', 'C', '4', 'D']
-
말씀하시는 '교차하여 합치기'를 영어로는 weave 또는 interleave라고 부르는 것 같습니다. 찾아보니 이런게 나옵니다. 둘다 결국
zip()
메소드가 핵심이네요. 링크1 링크2list_n = ['1','2','3','4'] list_a = ['a','B','C','D'] # 파이썬 2에서 작동함 list_s = [a for b in zip(list_n, list_a) for a in b] # 파이썬 3에서 작동함 list_ss = [*sum(zip(list_n, list_a),())] print(list_s) print(list_ss)
댓글 입력