코딩초보 리스트슬라이스도 루프돌릴수있는지 질문드립니다.
조회수 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열로 길쭉한 리스트를 특정 길이를 갖는 리스트들의 리스트로 만들고 싶으신 거라면 그런 건 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)
-
엽토군님이 이미 답변해주셨지만.. 제 생각에는 이런걸 원하시는 것 같아서 일단 달아봅니다..
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] 이하 반복
댓글 입력