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

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

如何將一個列表均勻地穿插到另一個列表中?

如何將一個列表均勻地穿插到另一個列表中?

SMILET 2022-10-25 15:14:37
我想以相等的間隔將較短的列表插入較長的列表中。例如,給定# existing listmain_list = ['lst1','lst2','lst3','lst4','lst5','lst6'] # aux list to be inserted to main listaux_list = ['ax1','ax2','ax3'] 我希望輸出是# desired output listnew_list = ['lst1','lst2','ax1','lst3','lst4','ax2','lst5','lst6','ax3'] 我試過了new_list = [i[:2]+k for i,k in zip(main_list,aux_list)]但這并沒有產生所需的輸出。(為清晰而編輯)
查看完整描述

3 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

嘗試sum使用zip

print(sum(zip(main_list[::2], main_list[1::2], aux_list), ()))

輸出:

('lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3')

如果您希望結果是列表,請使用:

print(list(sum(zip(main_list[::2], main_list[1::2], aux_list), ())))

輸出:

['lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3']

編輯:

如果您希望它適用于所有不同的長度,請使用它:

print(sum(zip(*[main_list[i::len(main_list) // len(aux_list)] for i in range(len(main_list) // len(aux_list))], aux_list), ()))

輸出:

('lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3', 'lst7', 'lst8', 'ax4')

同樣,如果您希望結果是一個列表,請使用:

print(list(sum(zip(*[main_list[i::len(main_list) // len(aux_list)] for i in range(len(main_list) // len(aux_list))], aux_list), ())))



查看完整回答
反對 回復 2022-10-25
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

這可能更容易理解,并且可以根據不同的列表大小進行縮放:


main_list = ['lst1','lst2','lst3','lst4','lst5','lst6'] 

aux_list = ['ax1','ax2','ax3'] 


# get subdivision sizes in main_list

m = len(main_list) // len(aux_list)


# create list of lists (in blocks)

z = [main_list[m*i:m*(i+1)] + [aux] for i,aux in enumerate(aux_list)]


# flatten

z = [k for sec in z for k in sec]


z

# ['lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3']

(請注意,如果您的列表不是可分割的大小,這將給出意外的輸出和/或中斷)


查看完整回答
反對 回復 2022-10-25
?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

以@U10-Forward 的回答為基礎并對其進行概括:


skip = len(main_list) // len(aux_list)

main_sub_lists = [main_list[i:i+skip] for i in range(0, len(main_list), skip)]

desired = sum([a_l + [b] for a_l, b in zip(main_sub_lists, aux_list)], [])


查看完整回答
反對 回復 2022-10-25
  • 3 回答
  • 0 關注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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