강의로 돌아가기
omg777

질문드립니다 !

import itertools
iterable1 = 'ABCD'
iterable2 = 'xy'
print(*(itertools.product(iterable1, iterable2)))

위와 같이 출력해보면
('A', 'x') ('A', 'y') ('B', 'x') ('B', 'y') ('C', 'x') ('C', 'y') ('D', 'x') ('D', 'y') 으로 나옵니다.
Ax 같은 꼴로 안나오는데 왜 그럴까요?

1 개의 답변
Demi

이는 product가 str형이 아닌 tuple 형으로 cartesian product를 하기 때문입니다. product는 들어온 iterable을 하나하나, 차례로 순회한 을 리턴하는 함수이지 그 짝을 붙여주는 함수는 아닙니다.

예를 들어, 다음과 같이 정수 리스트가 들어온 경우에는 둘이면 당연히 안되겠지요?

iterable1 = [1,2,3,4]
iterable2 = [3,4,5,6]
print(*(itertools.product(iterable1, iterable2)))

두 스트링을 붙이고 싶다면

iterable1 = 'ABCD'
iterable2 = 'xy'
[ ''.join(i) for i in itertools.product(iterable1, iterable2) ]

처럼 join 문을 대신 써주셔야할거에요.


python document - itertools.product를 보시면
product(A, B)((x,y) for x in A for y in B) 형태를 만든다고 합니다.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.