Tôi có một máy phát điện mà tôi muốn lặp qua ở hai cấp độ. Cấp độ đầu tiên là khoảng cách không đồng đều, sau đó tôi muốn chia cấp độ tiếp theo thành các nhóm 5, nói. Tôi cần nó để có bộ nhớ hiệu quả và làm việc trên đầu vào máy phát điện, vì vậy tôi đang làm một cái gì đó như sau. Tôi phải nghĩ rằng có thể có một cách tốt hơn? Đặc biệt, tôi không muốn các Nones sau trong các kết quả chiều dài không đồng đều.cá mú với một chuỗi kích thước chunk trong python?
import itertools
def dynamic_grouper(iterable, intervals):
for i in intervals:
inner_iter = list(itertools.islice(iterable, i)) # this is a "group"
yield inner_iter
iterable = iter(xrange(100))
chunk_sizes = [22,30,38,10]
for i,group in enumerate(dynamic_grouper(iterable, chunk_sizes)):
args = [iter(group)] * 5
for item in itertools.izip_longest(fillvalue=None, *args):
print "Group %i" % i
print "Items %s" % list(item)
Cảm ơn, điều này có vẻ như nó hiện các trick. – jseabold
Tác dụng của 'len (l)' trên 'l' nếu nó là máy phát điện? Sẽ không ép buộc đọc đầy đủ 'l', ví dụ: 'khối (file.readlines(), 2)'? – Harvey
'l' là một danh sách, không phải là một máy phát điện. Áp dụng 'len' vào máy phát sẽ làm tăng TypeError. Lưu ý rằng 'dynamic_grouper' là các danh sách năng suất, như vậy ở trên,' nhóm' là một danh sách. Vì vậy, gọi 'khối (nhóm, 5)' là okay. – unutbu