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

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

如何將較大的數組分布在較小的數組上

如何將較大的數組分布在較小的數組上

catspeake 2023-01-04 13:34:50
我的問題有點復雜,但是這個問題可以用一個例子來寫得相當籠統:我有一個池列表(pools)需要有一個子列表(children)均勻分布在列表中pools。該children列表已經排序,因此可以安全地假設它可以按pools當前順序分布在 上。例如,如果我有并且[pool1, pool2]我[child1, child2, child3]希望pool1被分配child1并且將被分配:child3pool2child2pools = ['pool1', 'pool2']children = ['child1', 'child2', 'child3']def print_assignment(pool, child)  print('{} assigned to {}'.format(child, pool)# The expectation is that distribute would perform the core logic and # call print_assignment during each assignmentdistribute(pools, children, print_assignment)預期輸出為:child1 assigned to pool1child2 assigned to pool2child3 assigned to pool1期望pools和的數量children可以是任意大小,但是,以下情況始終為真:len(pools) < len(children)。
查看完整描述

3 回答

?
守著一只汪

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

from itertools import cycle


pools = ['pool1', 'pool2']

children = ['child1', 'child2', 'child3']


c = cycle(pools)

for child in children:

? ? print('{} assigned to {}'.format(child, next(c)))

印刷:


child1 assigned to pool1

child2 assigned to pool2

child3 assigned to pool1


查看完整回答
反對 回復 2023-01-04
?
瀟瀟雨雨

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

我認為它更具可讀性:


from itertools import cycle


pools = ['pool1', 'pool2']

children = ['child1', 'child2', 'child3']


for child, pool in zip(children, cycle(pools)):

? ? print(f'{child} assigned to {pool}')

輸出:


child1 assigned to pool1

child2 assigned to pool2

child3 assigned to pool1


查看完整回答
反對 回復 2023-01-04
?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

你可以這樣做:


for elem in children:

    if children.index(elem) % 2 == 0:

        print(f"{elem} to {pools[0]}")

    else:

        print(f"{elem} to {pools[1]}")

考慮到你只有兩個池,如果他的索引是奇數,你可以將孩子分配給 pool1。


查看完整回答
反對 回復 2023-01-04
  • 3 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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