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

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

將陣列分成不均勻的組

將陣列分成不均勻的組

收到一只叮咚 2021-03-09 13:10:23
在python中給出這樣的數組:a = [ 0, 1, 3, 4, 6, 7, 8, 10, 14 ]我想將其分為三個不平衡的組,以便最終得到這樣的結果:b = [0, 1, 3, 4]c = [6, 7, 8]d = [10, 14]我想將數字分組為5的倍數,因此0-4的任何整數都將以第一個數組結尾,第二個數組以5-9結尾,依此類推。
查看完整描述

3 回答

?
蕪湖不蕪

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

Itertools.groupby始終是答案!


在這里,我們將每個數字四舍五入到最接近的5,然后按相等的數字分組:


>>> for n, g in itertools.groupby(a, lambda x: round(x/5)*5):

    print list(g)


[0, 1, 3, 4]

[6, 7, 8]

[10, 14]


查看完整回答
反對 回復 2021-03-29
?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

如果我們對正在使用的數字有所了解,我們可能會或多或少地節省時間。我們還可以想出一個非??焖俚姆椒?,它的內存效率非常低,但是如果適合您的目的,可以考慮一下:


#something to store our new lists in

range = 5 #you said bounds of 5, right?

s = [ [] ]

for number in a:

    foundit = false

    for list in s:

        #deal with first number

        if len( list ) == 0:

            list.append( number )

        else:

            #if our number is within the same range as the other number, add it

            if list[0] / range == number / range:

                foundit = true

                list.append( number )

    if foundit == false:

       s.append( [ number ] )


查看完整回答
反對 回復 2021-03-29
?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

現在,我對您對組的定義有了更好的了解,我認為這個相對簡單的答案不僅會起作用,而且還應該非??欤?/p>


from collections import defaultdict


a = [0, 1, 3, 4, 6, 7, 8, 10, 14]

chunk_size = 5

buckets = defaultdict(list)


for n in a:

    buckets[n/chunk_size].append(n)


for bucket,values in sorted(buckets.iteritems()):

    print '{}: {}'.format(bucket, values)

輸出:


0: [0, 1, 3, 4]

1: [6, 7, 8]

2: [10, 14]


查看完整回答
反對 回復 2021-03-29
  • 3 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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