반응형
파이썬 목록을 다른 "하위 목록"으로 분할합니다. 예 : 더 작은 목록 [중복]
이 질문에는 이미 답변이 있습니다.
- 리스트를 어떻게 고른 크기의 덩어리로 나누나요? 답변 60 개
1000에 이르는 파이썬 목록이 있습니다. 다음과 같은 것 :
data=["I","am","a","python","programmer".....]
어디서, len (data) = say 1003
이제 원래 목록을 100 단위로 분할하여이 목록 (데이터)의 하위 집합을 만들고 싶습니다. 따라서 마지막으로 다음과 같은 것을 원합니다.
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
이 작업을 수행 할 수있는 비열한 방법이 있습니까? 분명히 나는 data [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()
문서에는 유명한 "그룹화"패턴도 포함되어 있습니다.
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-ie-smaller-lists
반응형
'IT' 카테고리의 다른 글
파이썬 CSV 문자열을 배열로 (0) | 2020.06.01 |
---|---|
vs (0) | 2020.06.01 |
HTML 5 Favicon-지원? (0) | 2020.06.01 |
ASP.NET MVC 컨트롤러에서 외부 URI로 리디렉션 (0) | 2020.06.01 |
Django DB 설정 '잘못된 구성'오류 (0) | 2020.06.01 |