IT

파이썬 목록을 다른 "하위 목록"으로 분할합니다. 예 : 더 작은 목록

lottoking 2020. 6. 1. 08:11
반응형

파이썬 목록을 다른 "하위 목록"으로 분할합니다. 예 : 더 작은 목록 [중복]


이 질문에는 이미 답변이 있습니다.

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