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), ())))

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']
(請注意,如果您的列表不是可分割的大小,這將給出意外的輸出和/或中斷)

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)], [])
添加回答
舉報