亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將列表拆分為大約相等長度的N個部分

將列表拆分為大約相等長度的N個部分

UYOU 2019-07-30 15:08:33
將列表拆分為大約相等長度的N個部分將列表劃分為大致相等的部分的最佳方法是什么?例如,如果列表有7個元素并將其拆分為2個部分,我們希望在一個部分中獲得3個元素,而另一個應該具有4個元素。我正在尋找像even_split(L, n)這樣的東西L分成n幾部分。def chunks(L, n):     """ Yield successive n-sized chunks from L.     """     for i in xrange(0, len(L), n):         yield L[i:i+n]上面的代碼給出了3個塊,而不是3個塊。我可以簡單地轉置(迭代它并獲取每列的第一個元素,調用第一部分,然后取第二部分并將其放入第二部分等),但這會破壞項目的順序。
查看完整描述

3 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

這是一個可以工作的:


def chunkIt(seq, num):

    avg = len(seq) / float(num)

    out = []

    last = 0.0


    while last < len(seq):

        out.append(seq[int(last):int(last + avg)])

        last += avg


    return out

測試:


>>> chunkIt(range(10), 3)

[[0, 1, 2], [3, 4, 5], [6, 7, 8, 9]]

>>> chunkIt(range(11), 3)

[[0, 1, 2], [3, 4, 5, 6], [7, 8, 9, 10]]

>>> chunkIt(range(12), 3)

[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]


查看完整回答
反對 回復 2019-07-30
?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

只要你不想要任何像連續塊一樣愚蠢的東西:


>>> def chunkify(lst,n):

...     return [lst[i::n] for i in xrange(n)]

... 

>>> chunkify(range(13), 3)

[[0, 3, 6, 9, 12], [1, 4, 7, 10], [2, 5, 8, 11]]


查看完整回答
反對 回復 2019-07-30
  • 3 回答
  • 0 關注
  • 490 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號