나는 내 일부 오래된 코드를 읽고이 줄을 건너 온 한중첩 된 반복자 사용에 대한 요점이 있습니까?
itertools.starmap(lambda x,y: x + (y,),
itertools.izip(itertools.repeat(some_tuple,
len(list_of_tuples)),
itertools.imap(lambda x: x[0],
list_of_tuples)))
명확하게하기 위해, 나는 약간의 list_of_tuples
가있는 나는 각 튜플합니다 (itertools.imap
)에서 첫 번째 항목을 얻고 싶은이, I list_of_tuples
에 각 튜플에 대한 복사본이 있으므로 (itertools.repeat
) 반복하고자하는 튜플을 가지고 있고 list_of_tuples
(itertools.starmap
)의 항목을 기반으로 새로운 더 긴 튜플을 만들고 싶습니다.
예를 들어, some_tuple = (1, 2, 3)
및 list_of_tuples = [(1, other_info), (5, other), (8, 12)]
이라고 가정합니다. [(1, 2, 3, 1), (1, 2, 3, 5), (1, 2, 3, 8)]
과 같은 것을 원합니다. 이것은 정확한 입출력 (꽤 무관하고 복잡한 클래스를 사용합니다)이 아니며 실제 목록과 튜플이 매우 큽니다.
이터레이터를 중첩하는 요점이 있습니까? itertools의 각 함수가 내가 준 iterator를 반복하고 어딘가에 정보를 저장해야하는 것처럼 보입니다. 이는 다른 반복자를 starmap
안에 넣는 것이 아무런 이점도 없다는 것을 의미합니다. 나는 완전히 틀린가? 이게 어떻게 작동합니까?
예상되는 입력과 출력을 보여 주면 수행 한 작업을 매핑하는 것이 좋습니다. – Hackaholic
아니요, 간단한 이유 때문에 코드를 따르기가 너무 어렵습니다. 그것을 간단하게 유지하십시오 –
@gnibbler는 그것을 그대로 유지할 수도 있습니다. 심지어 그것을 제거하면 우리가 반복자를 중첩시켜줍니다. 따라서 그 변경 사항을 제거하지 않으면 일반적으로 중첩 할 지점이 있는지 궁금합니다. – Dannnno