파이썬 여러개의 리스트 나누기 질문합니다.

조회수 1306회

몇일 전 동일한 질문을 올렸었는데 한번만 더 질문 하겠습니다.

def random_chunk(li, min_chunk=1, max_chunk=3):

    it = iter(li)
    while True:
        nxt = list(islice(it,randint(min_chunk,max_chunk)))
        if nxt:
            yield nxt
        else:
            break

li = [ 1, 2, 3, 4, 5]
b = [5,6,7,8,9]

divide = list(random_chunk(li))
d = []
for i in divide:
    cut = len(i)
    ad = b[:cut]
    d.append(ad)
print d

#현재 print
[[1, 2], [3, 4, 5]]
[[5, 6], [5, 6, 7]] -> [[5, 6], [7, 8, 9]]로 되어야합니다.

위의 코드는 현재 제가 만든 함수 이며, 처음 리스트 li가 함수 random_chunk를 통해 나누어 지게되면 for문을 사용하여 각 리스트의 길이를 받고 그것을 다른 리스트에 적용 시키면 똑같이 나눠질줄알고 시도 한 것입니다. 하지만 위의 코드대로 하면 b의 리스트가 li의 리스트와 동일하게 나누어 지긴하지만 원소가 중복이 되어 나옵니다. 어떻게하면 중복이 되지않게끔 할 수 있을까요 ?

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • cur = len(i) 이부분에서 cut이 2와 3이 될텐데 Sunjong Park 2018.11.29 19:31
  • 그럼 b[:2] b[:3] 이 되겠군요. 그럼 [[5, 6], [5, 6, 7]] 이 되는게 당연하겠죠. Sunjong Park 2018.11.29 19:32
  • 정확하게 무엇을 하려는지 이해가 안되네요. li는 random_chunk에 넣고, d는 [:cut]을 하고.. 원 질문이 무엇인지 알아야겠네요 Sunjong Park 2018.11.29 19:34
  • 전체적인 코딩은 첨부 하지 않아 그런거 같습니다 크게 설명 드리자면 어떻게 나누었을때 가장 작은 값(수식 사용) 또는 큰 값을 가진 partition이 되는가를 찾는 코딩을 만들고 있습니다. li를 random_chunk에 넣고, d 리스트는 컷을하게 된 이유는 random_chunk가 1개 이상의 리스트가 들어갈 시에 정상적으로 작동이 되지 않아 방법을 찾고 있는 것입니다. 제가 하고자 하는것은 두개의 리스트가 동시에 같은 크기로 나누고자 합니다. 여기서 같은 크기란 li = [[1,2],[3],[4,5]] / b = [[5,6],[7],[8,9]] 이렇게 똑같이 나눠지는 것을 말합니다. 질문을 명확하게 적지않아 죄송합니다. 알 수 없는 사용자 2018.11.29 19:49

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)