코딩초보 리스트슬라이스도 루프돌릴수있는지 질문드립니다.

조회수 780회

맨 아래에 있는 리스트 합본을 5개씩 잘라서 출력을하고싶은데 혹시 리스트 슬라이스 범위도 루프로 만들어서 자동으로 만들어지게끔 할수 있을까요???

num = int(input())
moc = num//4
namu = num%4
like = 0
hell = 0
a = []

while like < moc:
    like = like + 1    
    hell = like    
    print(hell)    
    b=[]    
    b.append(hell)

    while hell < num:    
        hell = hell + moc    
        if hell > (num-namu): continue    
        print(hell)    
        b.append(hell)

    a.append(b)

hell = num - namu
b=[]
c=[]

while hell < num:
    hell = hell + 1    
    print(hell)    
    b.append(hell)

c.append(b)

# 문제의 "리스트 합본"
d=a[0:5]
print(d)
d=a[6:10]
print(d)
print(c)

2 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    뭘 어떻게 하고 싶으시다는 건지 잘은 모르겠지만, 단지 1열로 길쭉한 리스트를 특정 길이를 갖는 리스트들의 리스트로 만들고 싶으신 거라면 그런 건 chunk라는 용어로 조사하시면 됩니다.

    # 퍼옴: https://stackoverflow.com/a/312464/8680764
    def chunks(lst, n):
        for i in range(0, len(lst), n):
            yield lst[i:i + n]
    
    longlist = [1, 2, 'foo', 3, 'bar', 8876, 'dee', 'meh', -1, False, '1', None]
    
    for five_items in chunks(longlist, 5) :
        print(five_items)
    
    • 처음 질문을 올려보는거라 두서없이 질문을 올렸었네요... 엽토군님이 말씀하신것처럼 입력값으로 리스트를 만들고 5개씩 쪼개고싶었던게 맞습니다. 미숙한질문에 답변해주셔서 감사합니다. 안강민 2021.12.6 14:05
  • 엽토군님이 이미 답변해주셨지만.. 제 생각에는 이런걸 원하시는 것 같아서 일단 달아봅니다..

    a = list(range(50))
    b = len(a)
    
    for i in range(b)[::5]:
        print()
        for ii in range(5):
            print(a[i + ii])
    >>>
    0
    1
    2
    3
    4
    
    5
    6
    7
    8
    9
    
    이하 반복
    
    for i in range(b)[::5]:
        print()
        print(a[i:i + 5])
    >>> [0, 1, 2, 3, 4]
    
    [5, 6, 7, 8, 9]
    
    [10, 11, 12, 13, 14]
    
    [15, 16, 17, 18, 19]
    
    이하 반복
    
    • 리스트를 일정길이로 쪼개는것도 여러가지 방법이 있다는것을 알려주셔서 감사합니다. 처음 질문을 올려보아서 두서없이 질문드린점 죄송하게생각드리며 답변해주셔서 감사합니다. 안강민 2021.12.6 14:08

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

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

(ಠ_ಠ)
(ಠ‿ಠ)