반응형
파이썬 목록을 다른 "하위 목록"으로 분할합니다(예: 더 작은 목록).
1000에 달하는 파이썬 리스트가 있어요예를 들어 다음과 같습니다.
data=["I","am","a","python","programmer".....]
여기서 len(data)= 1003이라고 합니다.
이 리스트(데이터)의 서브셋을 작성하려면 , orginal 리스트를 100의 청크로 분할합니다.그래서 마지막으로, Id는 다음과 같은 것을 원합니다.
data_chunk1=[.....] #first 100 items of list data
data_chunk2=[.....] #second 100 items of list data
.
.
.
data_chunk11=[.....] # remainder of the entries,& its len <=100, len(data_chunk_11)=3
이 과제를 달성할 수 있는 비토닉한 방법이 있나요?물론 데이터[0:100] 등을 사용할 수 있지만, 이것은 매우 비피톤적이고 매우 비효율적이라고 생각합니다.
대단히 고맙습니다.
라고 할 수 있을 것 같다
chunks = [data[x:x+100] for x in range(0, len(data), 100)]
3.x 대신 python 2.x를 사용하는 경우 를 사용하여 메모리 효율을 높일 수 있습니다.xrange()
위의 코드를 다음과 같이 변경합니다.
chunks = [data[x:x+100] for x in xrange(0, len(data), 100)]
사실 이 경우 플레인 슬라이스를 사용하는 것이 가장 좋은 해결책이라고 생각합니다.
for i in range(0, len(data), 100):
chunk = data[i:i + 100]
...
슬라이스를 복사하지 않으려면itertools.islice()
하지만 여기에서는 그럴 필요가 없는 것 같습니다.
그itertools()
문서에는 유명한 "grouper" 패턴도 포함되어 있습니다.
def grouper(n, iterable, fillvalue=None):
"grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
마지막 청크를 올바르게 처리하려면 수정이 필요하기 때문에 플레인 슬라이스를 사용한 간단한 솔루션이 좋다고 생각합니다.
chunks = [data[100*i:100*(i+1)] for i in range(len(data)/100 + 1)]
이것은 인정된 답변에 해당합니다.예를 들어, 가독성을 위해 10개의 배치로 단축하면 다음과 같습니다.
data = range(35)
print [data[x:x+10] for x in xrange(0, len(data), 10)]
print [data[10*i:10*(i+1)] for i in range(len(data)/10 + 1)]
출력:
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [20, 21, 22, 23, 24, 25, 26, 27, 28, 29], [30, 31, 32, 33, 34]]
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [20, 21, 22, 23, 24, 25, 26, 27, 28, 29], [30, 31, 32, 33, 34]]
언급URL : https://stackoverflow.com/questions/9671224/split-a-python-list-into-other-sublists-i-e-smaller-lists
반응형
'programing' 카테고리의 다른 글
Chrome 콘솔에서 VueX 작업/변환 오류 (0) | 2022.11.03 |
---|---|
연관 배열 개체의 JavaScript foreach 루프 (0) | 2022.11.03 |
동일한 열 값을 가진 특정 행을 mysql 테이블에서 삭제하려면 어떻게 해야 합니까? (0) | 2022.11.03 |
JavaScript에서 문자열의 대시 후 모든 항목 가져오기 (0) | 2022.11.03 |
JavaScript에서 문자열을 float로 변환하는 방법 (0) | 2022.11.03 |