我想以一種特殊的方式合并python中的兩個數(shù)組。我的輸出數(shù)組的奇數(shù)索引的out條目應(yīng)該是我的第一個輸入數(shù)組的對應(yīng)條目in0。具有偶數(shù)索引的條目out應(yīng)是我的第二個輸入數(shù)組的對應(yīng)條目 in1。in0,in1并且out都是相同的長度。例子:輸入數(shù)組in0 = [0, 1, 2, 3]
in1 = [4, 5, 6, 7]應(yīng)合并到輸出數(shù)組out = [0, 5, 2, 7]有沒有比循環(huán)輸入的整個長度并out“手動”填充我的更好的方法?
3 回答

互換的青春
TA貢獻1797條經(jīng)驗 獲得超6個贊
您可以使用列表理解并從in0
偶數(shù)索引和in1
奇數(shù)索引中選擇值:
[in0[i] if i % 2 == 0 else in1[i] for i in range(len(in0))] # [0, 5, 2, 7]

一只甜甜圈
TA貢獻1836條經(jīng)驗 獲得超5個贊
如果您樂于制作完整的列表副本,那么切片很簡單:
>>> in0 = [0, 1, 2, 3]
>>> in1 = [4, 5, 6, 7]
>>> out = in0[:]
>>> out[1::2] = in1[1::2]
>>> out
[0, 5, 2, 7]

蕭十郎
TA貢獻1815條經(jīng)驗 獲得超13個贊
如果你不介意一些冗長...
from itertools import cycle
in0 = [0, 1, 2, 3]
in1 = [4, 5, 6, 7]
out = [pair[i] for pair, i in zip(zip(in0, in1), cycle([0,1]))]
這個怎么運作:
zip(in0, in1)
是一個元組序列,(0,4), (1,5), (2,6), (3,7)
。cycle([0,1])
是無盡的交替 0 和 1 流,用作步驟 1 中元組中的索引。zip(zip(...), cycle(...))
產(chǎn)生一對元組和索引:(0, (0,4)), (1, (1,5)), (0, (2,6)), (1, (3,7)).
列表理解從每個元組中獲取正確的元素。
最后,列表推導(dǎo)式是一個通用版本
[(0,4)[0], (1,5)[1], (2,6)[0], (3,7)[1]]
添加回答
舉報
0/150
提交
取消