다음 접근 방식을 사용하여 길이가 다른 여러 목록의 하위 제품을 튜플 목록으로 병합하려고합니다.
import itertools
letters = ['a', 'b', 'c']
symbols = ['*', '#', '+']
numbers = [1, 2, 3, 4, 5]
tuples_of_two = zip(letters, symbols)
tuples_of_three = list(itertools.product(tuples_of_two, numbers))
print(tuples_of_three)
튜플과 숫자를 포함하는 튜플 목록을 생성합니다.
[(('a', '*'), 1),
(('a', '*'), 2),
(('a', '*'), 3),
(('a', '*'), 4),
(('a', '*'), 5),
(('b', '#'), 1),
(('b', '#'), 2),
(('b', '#'), 3),
(('b', '#'), 4),
(('b', '#'), 5),
(('c', '+'), 1),
(('c', '+'), 2),
(('c', '+'), 3),
(('c', '+'), 4),
(('c', '+'), 5)]
그러나 실제로 "서브 튜플"이없는 튜플 목록 인 다음 결과를 얻으려고합니다.
[('a', '*', 1),
('a', '*', 2),
('a', '*', 3),
('a', '*', 4),
('a', '*', 5),
('b', '#', 1),
('b', '#', 2),
('b', '#', 3),
('b', '#', 4),
('b', '#', 5),
('c', '+', 1),
('c', '+', 2),
('c', '+', 3),
('c', '+', 4),
('c', '+', 5)]
튜플에서는 'a'와 '*', 'b'는 '#', 'c'는 '+'와 결합하여 intertools.product가 도달 할 수있는 전체 제품이 아닙니다.
이것은 아마도 튜플의 첫 번째 요소를 "완화"하거나 직접적인 방식으로 더 우아한 일부 목록 공표를 사용하여 달성 할 수 있습니다.
하지만 지금은 꼼짝도 못하고 ..
누구든지 도울 수 있습니까?
미리 감사드립니다!
itertools.product
중첩 된 for 루프와 동일한 작업을 수행합니다. 간단한 목록 이해력을 사용하여 zip
한 번에 필요한 것을 얻을 수 있습니다.
[(l, s, n) for l, s in zip(letters, symbols) for n in numbers]
#[('a', '*', 1),
# ('a', '*', 2),
# ('a', '*', 3),
# ('a', '*', 4),
# ('a', '*', 5),
# ('b', '#', 1),
# ...
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다