[英]Python list split into chunks (BACKWARDS)
我想將給定的python列表拆分為多個塊,類似於以下鏈接,但相反。
當前forward_chunk([1,2,3],2) = [[1,2], [3]]
但是我想要backward_chunk([1,2,3],2) = [[1], [2,3]]
# what I currently have
def forward_chunk(list, size):
for i in range(0, len(list), size):
yield list[i:i+size]
我無法一生都使用所有范圍和列表切片來實現向后的夢想。 有人有想法么?
STH。 像這樣:
def backward_chunk(l, size):
start = 0
for end in range(len(l)%size, len(l)+1, size):
yield l[start:end]
start = end
> list(backward_chunk([1, 2, 3], 2))
[[1], [2, 3]]
將第一塊大小計算為列表長度和一般塊大小的模。 而且,請不要調用變量list
。
找到會有多少個額外的元素,將列表一分為二,生成第一個元素,然后執行塊操作並生成其余元素。
def forward_chunk(lst, size):
piece = len(lst) % size
piece, lst = lst[:piece], lst[piece:]
yield piece
for i in range(0, len(lst), size):
yield lst[i:i+size]
您可以使用普通的塊生成器並根據需要反轉列表。
def chunk(data, size, reverse=False):
data = data[::-1] if reverse else data
for n in range(0, len(data), size):
yield data[n:n+size]
用法示例:
info = [1, 2, 3, 4, 5, 6, 7, 8]
for i in chunk(info, 4):
print(i) # => [1, 2, 3, 4], [5, 6, 7, 8]
for i in chunk(info, 4, True):
print(i) # => [8, 7, 6, 5], [4, 3, 2, 1]
如果只想反轉ORDER而不是列表本身,則在reverse
為True
只產生data[n:n+size][::-1]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.