목록 병합의 반대입니다.하위 목록 만들기
주어진리스트 및 길이 n은 길이 n의 서브리스트의리스트를 반환한다.
def sublist(lst, n):
sub=[] ; result=[]
for i in lst:
sub+=[i]
if len(sub)==n: result+=[sub] ; sub=[]
if sub: result+=[sub]
return result
예 :
목록 인 경우 :
[1,2,3,4,5,6,7,8]
그리고 n은 :
3
반환 :
[[1, 2, 3], [4, 5, 6], [7, 8]]
더 웅변/간결한 방법이 있습니까?
(위의 맥락에서) 목록에 목록을 추가 할 때 선호 무엇 여담 :
list1+=[list2]
또는를 :
list1.append(list2)
을 감안할 때 그 (Summerfeild의 '파이썬 3 프로그래밍'에 따라) 그들은 동일합니까?
감사합니다.
from itertools import islice
def take(n, it):
"Return first n items of the iterable as a list"
return list(islice(it, n))
def split(it, size):
it = iter(it)
size = int(size)
ret = take(size, it)
while ret:
yield ret
ret = take(size, it)
편집 : 당신의 asside에 대해서는, 항상 list.append를 사용 (저쩌구
감사합니다. unutbu, 이것이 얼마나 평범한 지 이해력을 사용하고 있는지를 웃어 봐야합니다. 그 (것)들을 공부하는 나의 필요를 이해한다. + = vs append에 관해서는, 나는 list1 + = list2와 list1.append (list2)가 아니라 list1 + = [list2]를 list1.append (list2)와 비교했을 때 차이점을 이해할 수 있습니다. 감사합니다 훌륭한 답변/토론. –
@Michael Puckett : 질문의 두 번째 부분을 잘못 읽었습니다. 편집 중 ... – unutbu
감사합니다. unutbu - append ftw. :) –